wait命令不等待变量赋值吗?

时间:2014-11-28 17:45:15

标签: linux bash

我正在尝试编写一个bash脚本来收集几个命令返回的数值结果,然后对结果进行一些简单的算术运算。如果命令(独立的)可以并行运行,那将是很好的。如果没有“&”,以下工作正常,需要10秒。使用“&”,按预期需要5秒,但随后会显示以下错误消息。感谢任何建议。

#!/bin/bash
set -eu
echo "Running .."
aa=$(sleep 5; ls |wc -l) & ###try with and without <&>
bb=$(sleep 5; ls |wc -l) & ###try with and without <&>
wait
cc=$(($aa + $bb))
echo $cc

run.sh: line 7: aa: unbound variable

1 个答案:

答案 0 :(得分:4)

&不会影响parens的内容,它会影响整个命令。也就是说它会影响作业本身。

但是&实际上做了什么?它在一个单独的进程中运行该命令。变量赋值不会反映到父shell的变量。这意味着即使在运行了整整5秒之后,该命令也完成了绝对没有,而不是在parens中运行命令。