Shell脚本仅在上一个命令成功时运行,或仅在某些文件存在时运行

时间:2016-06-16 15:18:55

标签: linux bash apache shell jar

我有一组shell脚本,它们在 cgi-bin Apache 服务器中运行。 第一个脚本触发第二个脚本,第二个脚本触发第三个脚本,依此类推。除了特定的脚本,比如第10个脚本......它执行 jar 文件,需要来自 for 循环的某些输入。当我运行脚本时,一切正常,除了 jar 文件。 jar 文件无法退出循环;它显示它仍在执行,但在后台任务将完成。并且因为它没有出现循环,所以它不会触发下一个命令和脚本。

10.sh代码:

#!/bin/bash
source variable.sh
for ((ib=1; ib<=9; ib++))
do
    in1=$(cat /input.txt | cut -d  " " -f1 | sed -n ''$ib'p')
    in2=$(cat input2.txt | cut -d  " " -f1 | sed -n ''$ib'p')
    java -jar javatool.jar -nogui -i $in2 -b $in1 -outdir /$in1
done 
echo '10th script done'
./11.sh

相同的脚本在本地终端中工作,但不在服务器上工作。我检查了权限,一切都很好。

后来我尝试了&#34; &amp; &#34;在 java 之后将其推入后台,执行下一个脚本。但是下一个脚本也需要来自 jar 的输出。

编辑1 当我把&amp;

时,java编程仍然没有出现循环

有没有办法让下一个脚本只在目录中找到某些文件时执行,如果没有等待2分钟,并检查目录,并执行(它不应该退出,它应该再次检查文件夹)再次直到文件存在)。 有什么办法吗? 或者有没有办法完成该jar文件的循环?

1 个答案:

答案 0 :(得分:1)

您可以将此附加到您的脚本

while [ ! -f outfile_frm_script10 ];
do
    sleep 1;
done;
echo '10th script done'
./11.sh