我正在从另一个shell脚本执行一个shell脚本。包含的shell脚本在执行后不会终止。但是当我单独运行它时,它可以正常工作并正常终止。
脚本1
#! /bin/bash
WebApp="R"
#----------Check for Web Application Status
localWebAppURL="http://localhost:8082/"
if curl --max-time 5 --output /dev/null --silent --head --fail "$localWebAppURL"; then
WebApp="G"
else
exec ./DownTimeCalc.sh &
fi
echo "WebApp Status|\"WebApp\":\"$WebApp\""
在上面的脚本中,我正在调用另一个名为DownTimeCalc.sh的脚本。
DownTimeCalc.sh
#! /bin/bash
WebApp="R"
max=15
for (( i=1; i <= $max; ++i ))
do
if curl --max-time 5 --output /dev/null --silent --head --fail "http://localhost:8082/"; then
WebApp="G"
echo "Status|\"WebApp\":\"$WebApp\""
break
else
WebApp="R"
sleep 10
fi
echo "Status|\"WebApp\":\"$WebApp\""
done
echo "finished"
exit
答案 0 :(得分:0)
exec ./DownTimeCalc.sh &
您不需要exec
。如果你想运行脚本并等待它完成,那么只需写:
./DownTimeCalc.sh
或者如果您想在后台运行它并继续第一个脚本,请写:
./DownTimeCalc.sh &
答案 1 :(得分:0)
当您使用&
时,已启动的进程将在后台启动,并在后台运行,而前台脚本中的其他命令运行或您与shell进行交互。它正在做你告诉它的事情。如果按Enter键,您将看到任何排队的stderr输出,如果您键入fg
,它将使该进程在前台仍处于运行状态。
但在这种情况下,您可能不想使用&
。