Linux 我可以在bash中对多个并行后台进程使用相同的变量名吗?

Linux 我可以在bash中对多个并行后台进程使用相同的变量名吗?,linux,bash,shell,parallel-processing,wait,Linux,Bash,Shell,Parallel Processing,Wait,在下面的shell脚本中,我想在后台并行运行2个命令以加快进程,等待它们完成,然后继续运行更多的命令 由于我在两个循环中使用相同的变量名(DATASERVERNAME),这些变量是否会在后台相互干扰?我应该在每个循环中使用不同的变量名,比如DATASERVERNAME\u SYBASE、DATASERVERNAME\u ORACLE吗 #!/bin/bash while read DATASERVERNAME do some commands here done < sybase_da

在下面的shell脚本中,我想在后台并行运行2个命令以加快进程,等待它们完成,然后继续运行更多的命令

由于我在两个循环中使用相同的变量名(DATASERVERNAME),这些变量是否会在后台相互干扰?我应该在每个循环中使用不同的变量名,比如DATASERVERNAME\u SYBASE、DATASERVERNAME\u ORACLE吗

#!/bin/bash
while read DATASERVERNAME
do
  some commands here
done < sybase_data_servers.txt &

while read DATASERVERNAME
do
  some commands here
done < oracle_data_servers.txt &

wait

some more commands here
#/bin/bash
读取数据服务器名称时
做
这里有一些命令
完成
您的脚本是安全的,您可以通过一个小实验发现:

#!/bin/sh -eu
echo A > a
echo B > b

X=0

while read X
do
  echo X=$X
done < a &
wait

echo X=$X

while read X
do
  echo X=$X
done < b &
wait



echo X=$X
后台循环在不同的进程中运行(
$BASHPID
也应该反映这一点)

X=A
X=0
X=B
X=0