我有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
但是所有作业同时启动。我怎样才能做到这一点?
答案 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
使用大括号扩展,循环不仅可以按顺序运行它们,而且在需要时更易于调整和重用