在bash脚本中奇怪的并行执行

时间:2017-01-06 03:05:05

标签: bash shell terminal

我正在尝试编写一个bash脚本,作为实验的一部分,并行回显2个变量的值,然后编写一个shell脚本,生成带有数字的文件并行添加到我的项目中。

这是shell脚本:

#!/bin/bash

value1=0
value2=1
for i in $(seq 1 2); do
    echo "Value 1 : " $((++value1)) &
    echo "Value 2 : " $((++value2))
    wait
    echo "Wait"
    done

这是我得到的输出:

Value 2 :  2
Value 1 :  1
Wait
Value 2 :  3
Value 1 :  1
Wait

我知道GNU parallel和xargs但我不想使用它们。

我想知道为什么' value2'首先打印出来,为什么' value1'永远不会增加。

1 个答案:

答案 0 :(得分:4)

value1 增加,但是在一个单独的过程中。原始流程中的value1未被修改。我们无法保证您首先会看到哪个值;这两个echo语句出现在两个不同的进程中,这些进程是在操作系统的一时兴起安排的。