[英]Shell scripts run one after another
我有 5 个 shell 脚本。 每个都有一个java
命令。 以前的作业 output 输入到下一个作业。
我创建了一个superScript.sh
//mail - to inform beginning
sh script1.sh;
sh script2.sh;
sh script3.sh;
sh script4.sh;
sh script5.sh;
//mail to inform end
示例script1.sh
cd toBaseDirectory;
java -cp /path/to/application.jar main.class parameter
但是所有的工作都是同时开始的。 我怎样才能使这个顺序?
尝试像这样运行javas
java -cp /path/to/application.jar main.class parameter & wait
如果只想在第一个成功退出时运行第二个命令。 为此,请使用 && 加入他们
command1 && command2
简单的例子
~$ cat abc.sh
#!/usr/bin/env bash
echo "hi"
~$ cat pqr.sh
#!/usr/bin/env bash
echo "batman say : $1"
如果 abc.sh 执行成功则只执行 pqr.sh
~$ retval=$(./abc.sh) && result=$(./pqr.sh "$retval") && echo "$result"
batman say : hi
您也可以尝试使用 shell 脚本执行 java 命令的类似方法
注意:要按命令顺序执行 Shell 脚本,等待第一个完成后再开始下一个。 您可以使用; command1; command2
wait
等待进程完成
您也可以选择仅在第一个命令成功退出时才运行第二个命令。 为此,请使用&&
加入他们
cmd1 && cmd2
但在这样的重复情况下,我建议在脚本正文中使用一个简单的循环:
for n in {1..5} ; do sh script${n}.sh ; done
循环不仅可以按顺序运行它们,而且在需要时更容易调整和重用,使用大括号扩展
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.