我在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