检查脚本是否已完成执行而不是退出

检查脚本是否已完成执行而不是退出

我正在使用一个无法修改的脚本,该脚本不使用退出代码。(所有退出都只是“退出”)

在不修改脚本(或对编写脚本的白痴大喊大叫)的情况下,有没有办法检查脚本是否“到达结束”而不是在脚本早期的某个时间点退出?

我唯一能想到的就是以某种方式跟踪活动进程直到它结束,但当它因错误退出时它也会结束。

答案1

我正在使用一个无法修改的脚本,该脚本不使用退出代码。

如果出现错误,该文件的最后一行应该包含“exit”,否则脚本即成功执行完毕。

此代码将导致命令退出,如果失败则返回代码 1,如果成功则返回代码 0:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit

tail -n1仅显示最后一行并grep -vq exit测试该行是否包含单词exit

如何显示有用的消息的示例:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit && echo Success

或者:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit || echo Fail

相关内容