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 的脚本。
停机时间计算器.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
解决方案
当您使用时&
,已启动的进程将在后台启动并在后台运行,同时来自前台脚本的其他命令运行或您与 shell 交互。它正在做你告诉它的事情。如果您按 Enter,您将看到任何排队的 stderr 输出,如果您键入fg
它,如果它仍在运行,它会将进程带到前台。
不过,您可能不想&
在这种情况下使用。
推荐阅读
- javascript - 将重节点放在可视化中心,将轻节点放在边缘?
- reactjs - 奇怪的 UI 行为 - React native w/expo
- c# - 错误从源文件访问 XMLHttpRequest 已被 CORS 策略阻止
- c# - 如何使用 AutoMapper 从 byte[] 转换为字符串?
- android - 如何在 Raspberry Pi 上使用来自 Android 的共享库
- azure - 如何为 Iothub 内置端点触发器创建函数应用程序
- sql - 如何在没有匹配行的 SQL 中查询?
- json - 我可以在 JSON 模式模式(正则表达式)中使用 unicode 标志吗?
- google-bigquery - How to know the number of queries per user in Bigquery?
- r - 如果 R 数据框中的条件满足条件,则连续过滤行