检查 apt-get 的 grep 结果并在 bash 条件中使用

检查 apt-get 的 grep 结果并在 bash 条件中使用

我正在尝试测试有关 Debian 上特定软件包版本的信息。但是,我对 APT 的结果执行 grep 似乎没有任何作用。我不确定如何编写 bash 命令:

if [[ $(apt-get -s install golang | grep "E: Unable to locate") ]]; then        
    echo "problem"
    exit;
fi

if apt-get -s install golang | grep "E: Unable to locate" > /dev/null; then     
    echo "problem"
    exit;
fi

OUTPUT=`apt-get -s install golang | grep --quiet "E: Unable to locate"`
if [ -n "$OUTPUT" ]; then
    echo "problem"
    exit;
fi

答案1

与大多数错误消息一样,该消息会打印在 stderr 上。您可以将 stderr 重定向到 stdout:

if [[ $(apt-get -s install golang 2>&1 | grep "E: Unable to locate") ]]; then   

然而,更好的做法是:

if ! apt-get -s install golang > /dev/null
then
  echo "problem"
  exit 1
fi

> /dev/null 2>&1如果您希望用户的唯一错误消息是“问题”,则可以选择使用。

相关内容