shell脚本没有终止

时间:2018-04-26 13:24:55

标签: bash shell

我正在从另一个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

2 个答案:

答案 0 :(得分:0)

exec ./DownTimeCalc.sh &

您不需要exec。如果你想运行脚本并等待它完成,那么只需写:

./DownTimeCalc.sh

或者如果您想在后台运行它并继续第一个脚本,请写:

./DownTimeCalc.sh &

答案 1 :(得分:0)

当您使用&时,已启动的进程将在后台启动,并在后台运行,而前台脚本中的其他命令运行或您与shell进行交互。它正在做你告诉它的事情。如果按Enter键,您将看到任何排队的stderr输出,如果您键入fg,它将使该进程在前台仍处于运行状态。

但在这种情况下,您可能不想使用&