首页 > 解决方案 > 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 的脚本。

停机时间计算器.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

标签: bashshell

解决方案


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

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


推荐阅读