我有两个shell脚本abc.sh
和def.sh
。在其中abc.sh
执行def.sh
,控件abc.sh
通过return语句返回。
我有一个echo命令,后面跟一个退出命令,该命令显然不起作用。
在下面,您将看到有关的内容 abc.sh
sleep 60;
bash ./gen_files/def.sh ./gen_files/regress_rpt_1_0.txt
sleep 60;
bash ./gen_files/def.sh ./gen_files/regress_rpt_1_1.txt
sleep 10;
echo "COMPLETED **** EXITING NOW ****";
exit 0;
请找到def.sh的内容
#!/bin/bash
function build_status()
{
FILE=$1
if test -f "$FILE"; then
echo "$FILE File Exists"
if `grep -q "Build Job" $FILE`;then
echo "Build found,Continuing to next launch statement"
return
else
echo "Build Not Found,Waiting for the build"
sleep 120
build_status $FILE
fi
else
echo "$FILE Not Found"
#build_status $FILE
fi
}
FILE=$1
build_status $FILE
我希望脚本在打印后退出COMPLETED **** EXITING NOW ****
并返回到终端。但是,我现在看到的是脚本不会自行退出。我可以在终端中看到打印内容,并且shell脚本仍在运行,没有任何活动
您abc.sh
作为后台作业运行。这意味着def.sh
当abc.sh
脚本在后台运行时,脚本(和脚本)的输出将被打印到终端。
脚本完成后,它将终止。
您正在后台运行脚本并将其输出到终端这一事实意味着它会覆盖启动脚本后shell立即打印的提示。直到您按下,外壳程序才会输出新的提示Enter。
解决方案是将脚本的输出写入日志文件,
./abc.sh >abc.log 2>&1 &
(这会写出输出和错误(abc.log
如果不存在则会创建错误,如果存在则将清空),或者为了不在后台运行脚本,
./abc.sh
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句