如何在shell sh脚本中匆忙获取错误及其代码



我在shell脚本sh中启动了一些rush命令。如果命令没有错误地终止,我怎么能得到?并且,在发生错误的情况下,我如何获得错误并将其呈现给执行脚本的用户?

正如我在第一个评论中所说,如果您将shell脚本与drush命令放在一起,执行脚本的用户将看到drush写入控制台的所有消息。但是,如果你想写一个更复杂的脚本,即检查错误等,那么这里有一个简短的例子,应该让你开始:

msg=$(drush blah 2>&1)
if [[ "$msg" =~ error* ]]
then
  echo "we had an error!"
else
  echo "success"
fi
msg=$(drush cc all 2>&1)
echo $msg

注意:这个脚本假设你有一个bash shell。

构造$(command)用于将标准输出管道传输到变量。由于drush将错误消息管道到标准输出,我们还需要在drush命令后面加上2>&1,这是一个将标准输出重定向到标准输出的命令。if检查基本上是$msg变量中"错误"的子字符串检查。

这是一个很好的Bash编程资源:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

希望对你有帮助。

=========== EDIT =============

如果您在Bourne shell中,您可以使用以下命令将输出重定向到变量:

msg=`drush cc all 2>&1`

通过执行echo $SHELL

,您应该能够看到您正在使用哪个shell

最新更新