繁体   English   中英

Shell 脚本一个接一个地运行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM