gpt4 book ai didi

linux - 如何在后台同时使用不同参数的循环运行 bash 脚本中的命令,同时格式化输出

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:18 25 4
gpt4 key购买 nike

以下代码片段将在脚本中运行,但每个循环需要很长时间。

#!/bin/bash
….
some_command $A $B $C | awk ‘{print$1}’ | while read -r var1; do
printf "\n$var1 \n"
printf "\n"
other_command $var1
printf "\n"
done
….

我尝试运行此命令,但 printf 语句将在 other_command 之前运行,该命令用于使输出更具可读性。

#!/bin/bash
….
some_command $A $B $C | awk ‘{print$1}’ | while read -r var1; do
printf "\n$var1 \n"
printf "\n"|
other_command $var1 &
printf "\n"
done
wait
….

如果我在循环中仅运行 other_command 和 & ,我会得到所需的结果,但它的可读性不太好。

最佳答案

这个想法是将长时间运行的命令移动到一个函数中,并作为子进程多次调用该函数。这样它们就可以并行运行。在函数内部,命令的输出首先写入局部变量,并且仅在命令完成后一次性打印。

#!/bin/bash

function do_something () {
local OUTPUT="$(other_command "$var1")"
printf "\n%s\n\n%s\n" "$1" "$OUTPUT";
}

some_command "$A" "$B" "$C" | while read -r "var1" "_";
do
do_something "$var1" &
done

wait

请注意,每次调用的输出顺序(可能)都会不同,这是并行执行所固有的。

关于linux - 如何在后台同时使用不同参数的循环运行 bash 脚本中的命令,同时格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com