展示服务信息后,退出命令无法退出Bash shell?

3
如此简单的一个Bash脚本,只包含两行代码。
cat show.sh
systemctl status cron
exit  0 

在终端中以root权限执行它。

bash  show.sh

在终端上显示有关cron.service的所有信息。

cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: ena
   Active: active (running) since Sat 2019-08-10 06:51:18 EDT; 13h ago
     Docs: man:cron(8)

为什么show.sh没有退出状态,添加一个单击q将退出show.sh,为什么exit 0没有执行?如何触发它?
我的期望是在终端上显示有关cron.service的信息并退出show.sh脚本。
我的show.sh已经完成一半,只显示终端上有关cron.service的信息。
一个长脚本自动化作业是有意义的,以上两行是显示整个脚本状态的最后一步。


只有在 systemctl 完成之后,才会运行 exit。如果 systemctl status cron 正在等待你按下 q,那么,这就是你的答案。 - Charles Duffy
如果您不想让systemctl这样做,我建议调整其设置,不再启动分页器。 - Charles Duffy
1
顺便说一句,我建议省略 exit 0 行。如果没有它,脚本将以最后一个运行的命令的状态退出(也就是默认行为是 echo "$?"),这是有用的:它会通过 systemctl 的退出状态,让你的脚本调用者知道结果。 - Charles Duffy
(错误,我的意思是 exit "$?",而不是 echo "$?",当然。) - Charles Duffy
1个回答

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接