是否可以在 shell 脚本中同时运行两个命令?

Zen*_*Zen 12 bash background-process parallelism

我知道在命令行上我可以用来&在后台运行命令。但我想知道我是否可以在脚本中做到这一点。

我有一个这样的脚本:

date_stamp=$(date +"%Y-%m-%d" --date='yesterday')
shopt -s extglob

cd /my/working/directory/

sh ./stay/get_it_ios.sh
sh ./stay/get_it_mix.sh

cd stay
zip  ../stay_$date_stamp.zip  ./*201*

rm ./stay/!(*py|*sh)
Run Code Online (Sandbox Code Playgroud)

我想运行sh ./stay/get_it_ios.shsh ./stay/get_it_mix.sh合力得到更为准确的数据。是否可以在 shell 脚本的范围内执行此操作?

Dop*_*oti 21

是的。如果您想同时做两件事,并等待它们都完成,您可以执行以下操作:

sh ./stay/get_it_ios.sh &  PIDIOS=$!
sh ./stay/get_it_mix.sh &  PIDMIX=$!
wait $PIDIOS
wait $PIDMIX
Run Code Online (Sandbox Code Playgroud)

然后,您的脚本将并行运行两个脚本,并等待两个脚本完成后再继续。

  • 您可以只运行一个不带参数的 `wait` 来等待两个进程。 (4认同)
  • 除非在脚本的前面,否则您将第三个进程设置为后台,该进程应该运行到稍后的时间点。在我看来,最好肯定地声明你正在“等待”什么。 (3认同)