我是bash的初学者,所以如果这是一个基本问题或有语法问题,但我无法在任何地方找到答案,我表示歉意。我想运行一个命令,如果失败,请检查错误消息是否与某个字符串匹配。这是我有:仅在bash中存储错误消息
err_msg=`./command input.txt 2>&1`
if [$? -eq 1]
then
if [err_msg -eq "Error: timeout"]
then
#do something
fi
fi
这是正确的方法来做到这一点?如果我使用第一行来定义错误消息err_msg,那么$?仍然存储命令的通过/失败状态?另外,如果命令通过会发生什么? err_msg会是空白吗?
你有一些语法错误:1,留出空间周围的字符'['和']':这些都是内建的,需要有一个空间周围的空间被认可。 2.不要使用-eq来测试字符串是否相等。改用'='。回覆。你的问题:是的,'$?'将扩展到命令的返回码。 –
谢谢!另外,如果err_msg是第二个if语句中的$ err_msg,因为它是一个变量? –
是的,当然,你想检查'err_msg'的扩展。您还需要_quote_这个扩展:''$ err_msg“',除非您使用更强大的关键字'[[''。 –