检查脚本中是否存在一行错误

检查脚本中是否存在一行错误

我想在我的脚本中添加一个错误检查解决方案,它看起来像这样:

! [ `echo $?` != 0 ] || echo "omg, st went wrong, CTRL+C? `read`"

我的目标是当这条线运行时检查“$?” - 如果不是 0,则显示“天哪,st 出错了,CTRL+C?”然后等待用户输入或 CTRL+C。但我的一行行不起作用,因为它在打印“天哪,st 出错了,CTRL+C?”之前等待输入。文本。有人可以帮助我我错过了什么吗?

谢谢。

更新:最好在命令 st 之后执行此操作,如下所示:检查脚本中是否存在一行错误

“坏命令”是“uname -k” 好命令是“echo hi” - uname 给出非零退出代码,echo 给出 0

答案1

这是正确的;将`read`执行并将结果插入到发送到的字符串中echo

你做这件事的方式非常困难,需要进行所有这些插值等等。

if [[ $? -ne 0 ]]; then
    echo -n 'command failed.  ^C or "q" to abort.'
    read c
    [[ "$c" == q ]] && exit
fi

答案2

得到了解决方案:

$ uname -k || echo 'omg, fail' || read
uname: invalid option -- 'k'
Try `uname --help' for more information.
omg, fail
$ echo hi || echo 'omg, fail' || read
hi
$ 

更新:哎呀,打印文本后它不等待输入:\

答案3

当我编写可能长时间运行的脚本时;我更喜欢通过弹出窗口收到警告。例如,充满禅意

if [[ $? -ne 0 ]]; then
    if  zenity --question --text="Omg, something went wrong, do you wish to continue?"; then
    echo continue with program
    else
    echo "exiting" && exit; 
    fi
fi

这样我就可以做一些其他工作,并在出现问题时收到通知。另外,zenity 信息消息通常放在脚本的末尾。

相关内容