我正在尝试测试有关 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
如果您希望用户的唯一错误消息是“问题”,则可以选择使用。