运行带变量的GNU并行命令会导致冲突吗?

时间:2016-09-23 05:27:13

标签: linux bash variables unix gnu-parallel

我认为这归结于我没有完全理解GNU Parallel的过程是如何划分的。如果在GNU Parallel中使用变量会发生冲突,我会查找起来,而且我在网上发现很少甚至没有。

如果我使用以下命令并行:

echo "$textdata" | parallel -j5 cat | for line in file; do var1=$(echo $line); var2=$(echo "$line" | grep -A 1); var3=$(echo "$line" | somecommand); echo "$var1" "$var2" "$var3"; done 

使用变量时,相互覆盖是否会发生冲突?或者,它是否在不同的进程中运行并且可以使用相同的变量?

换句话说,$ var1,$ var2或$ var3会在并行运行的不同进程之间混淆吗?

1 个答案:

答案 0 :(得分:0)

对于其他想知道GNU parallel中运行变量是否会重叠的人,只需执行命令,例如:

echo "$textdata" | parallel -j5 cat | for line in file; do var1=$(echo $line); var2=$(echo "$line" | grep -A 1); var3=$(echo "$line" | somecommand); echo "$var1" "$var2" "$var3"; done 

以script.sh运行命令:

for line in file; do var1=$(echo $line); var2=$(echo "$line" | grep -A 1); var3=$(echo "$line" | somecommand); echo "$var1" "$var2" "$var3"; done 

因此将是:

echo "$textdata" | parallel -j5 /script.sh

希望这有助于任何使用并行和变量的人。