Bash脚本返回非零状态

时间:2014-10-28 22:21:05

标签: linux bash vagrant

我试图在Ubuntu 14.04 LTS系统上安装beanstalkd。似乎没关系,除了以下是给我非零返回状态。一旦发生这种情况,Vagrant就会停止,并且我会在没有运行的病房之后安装其他脚本。

我已经尝试了

grep -q "START=yes"
grep --quiet "START=yes"
grep "START=yes" > /dev/null

非似乎压制了GREP的输出

echo -n "Checking /etc/default/beanstalkd for beanstalkd startup line           ... "
if [ -f /etc/default/beanstalkd ]; then
    echo -n "START=yes is"
    grep "START=yes" /etc/default/beanstalkd > /dev/null
    if [ $? = 0 ]; then
        echo -n "..already present"
    else
        echo -n "START=yes" >> /etc/default/beanstalkd
        echo -n "..Added to /etc/default/beanstalkd"
    fi
fi
echo "Done!"

结果:

==> default: Checking /etc/default/beanstalkd for beanstalkd startup line           ... 
==> default: START=yes is
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

1 个答案:

答案 0 :(得分:1)

以下调用grep将禁止所有 grep输出(stderr和stdout)。没有警告,没有错误,没有。

grep -q "START=yes" /etc/default/beanstalkd >/dev/null 2>&1

如果您的查询是关于if [ $? = 0 ]; then行未按预期运行,您可以将其替换为:

if grep -q "START=yes" /etc/default/beanstalkd >/dev/null 2>&1; then
    # already present