我有一组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文件的循环?
答案 0 :(得分:1)
您可以将此附加到您的脚本
while [ ! -f outfile_frm_script10 ];
do
sleep 1;
done;
echo '10th script done'
./11.sh