Homebrew 的“安装”警告是错误吗?

Homebrew 的“安装”警告是错误吗?

当使用已安装的brew install foo命令时foo返回

Warning: foo-3.5.2 already installed

从技术上讲,这是否像 stderr 一样是一个错误,或者该消息只是 stdout?文档中没有指定。我之所以问这个问题,是因为我有一个脚本,如下所示:

#!/bin/bash
brew install foo
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

(这是一个简单的脚本,可以帮助我学习 if-then 条件——不要判断!)每次运行它时,脚本都会OK与上面的内容一起返回Warning。这表明警告不是错误/失败,对吗?

答案1

这听起来像是 brew 应用程序打印的警告,但 bash 不知道这是一个错误。bash 是否将其视为错误取决于应用程序是将其发送到错误流还是输出流,以及退出代码是什么。由于您从脚本中返回了 OK,因此 bash 认为命令返回的是 0,这意味着 bash 命令已成功运行。因此,brew 必须将此类警告发送到 stdout,而不是 stderr。

您知道如何使用 2> 将 stderr 重定向到文件吗?您可以在运行脚本时将 stderr (2) 和 stdout 重定向到两个不同的文件。然后,您就可以看到警告被打印到哪个流。

./script.sh > stdout.txt 2> stderr.txt

相关内容