我正在尝试编写一个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'永远不会增加。
答案 0 :(得分:4)
value1
增加,但是在一个单独的过程中。原始流程中的value1
未被修改。我们无法保证您首先会看到哪个值;这两个echo
语句出现在两个不同的进程中,这些进程是在操作系统的一时兴起安排的。