Shell脚本一个接一个地运行

时间:2020-05-19 07:28:05

标签: java linux bash shell

我有5个Shell脚本。每个都有一个java命令。先前的作业输出被输入到下一个作业。

我创建了一个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

但是所有作业同时启动。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

尝试像这样运行javas

java -cp /path/to/application.jar main.class parameter & wait

答案 1 :(得分:0)

仅当第一个命令成功退出时才想运行第二个命令。为此,请与&&

一起加入

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

您也可以尝试使用外壳脚本执行Java命令

注意: 要按命令顺序执行Shell脚本,请在第一个脚本完成之前等待下一个脚本完成。您可以使用 ; command1; command2

答案 2 :(得分:0)

wait等待过程完成

您也可以选择仅在第一个命令成功退出时运行第二个命令。为此,请与&&

一起加入
cmd1 && cmd2

但是在这种重复的情况下,我建议在脚本主体中使用一个简单的循环:

for n in {1..5} ; do sh script${n}.sh ; done

使用大括号扩展,循环不仅可以按顺序运行它们,而且在需要时更易于调整和重用

相关问题