Bash print stderr only, not stdout
本问题已经有最佳答案,请猛点这里访问。
我想lint一个文件,并打印stderr(错误消息),但不打印stdout(说该文件没问题)。
1 | php -l"foo/bar.php" |
- 如果没有错误,它会向stdout输出"No errors"消息。
- 如果有错误,它会向stderr输出详细消息。 我只想要这个。
我认为它将是
我想要的是消耗所有stdout,保持stderr。
(对不起,如果这是假的,但我没有发现任何确切的问题)
只需将stdout发送到null:
1 | cmd > /dev/null |
这保留了stderr,但抑制了stdout。
您可以使用:
1 | php -l"foo/bar.php" 2>&1 > /dev/null |
即将stderr重定向到stdout并将stdout重定向到
If there are no errors, it prints a"No errors" message to stdout.
If there are errors, it prints a detailed message to stderr. I want only this one.
如果发送一个错误消息,则会打印错误消息,如果为空,则打印
1 2 3 | ERROR=$(exec php -l"foo/bar.php" 2>&1 >/dev/null) [[ -z $ERROR ]] && ERROR='No error.' echo"$ERROR" |