【发布时间】:2012-08-28 11:18:52
【问题描述】:
我有一个这样的 bash 代码。
while <some_condition>
do
some_script &
done
我的目的是获取 some_script 代码的所有输出并分配一个变量。我试着写了
out=`some_script &`
但这一次 some_script 代码没有同时运行。我能做什么?
【问题讨论】:
标签: bash subprocess
我有一个这样的 bash 代码。
while <some_condition>
do
some_script &
done
我的目的是获取 some_script 代码的所有输出并分配一个变量。我试着写了
out=`some_script &`
但这一次 some_script 代码没有同时运行。我能做什么?
【问题讨论】:
标签: bash subprocess
您可以将后台命令重定向到临时文件,然后 wait 让它们完成并将输出收集回变量:
while <some_condition>
do
temp=$(mktemp)
temps=$temps" $temp"
some_script > $temp &
done
wait
output=$(cat $temps)
rm $temps
【讨论】:
$( < $temps)。
while/wait 组合来消除临时文件:output=$( while ...; do some_script &; done; wait)
$(< file) 只能用于单个文件。将整个循环包装到 $() 可以使输出行交错,这是您可能不想要的。
cat。我第一次阅读这个问题让我认为输出顺序并不重要,但现在我怀疑这也是错误的。如果您不介意,我会将我的 cmets 留在这里,作为相关但不相关的提示。