我想在我的脚本中添加一个错误检查解决方案,它看起来像这样:
! [ `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 信息消息通常放在脚本的末尾。