在下面的shell脚本中,我想在后台并行运行2个命令来加速进程,等待它们完成并继续运行更多命令.
由于我在两个循环中使用相同的变量名称(DATASERVERNAME),这些变量是否会在后台相互干扰?我应该在每个循环中使用不同的变量名称,例如DATASERVERNAME_SYBASE,DATASERVERNAME_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/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
脚本输出:
X=A
X=0
X=B
X=0
背景循环在不同的进程中运行($BASHPID也应该反映出来).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。