Tor*_*xed 82 shell io-redirection openbsd
我已经试过各种办法都重定向stdout
并stderr
以/dev/null
没有任何成功。我几乎一生都在运行 bash,我从来没有遇到过这个问题,但有一次在 BSD 中我被/bin/sh
.
我试过的:
if ls ./python* 2> /dev/null; then
echo found Python
fi
Run Code Online (Sandbox Code Playgroud)
...哪个有效;如果 Python 不存在,它将使来自 ls 的错误消息静音。但是,如果python.tgz
存在,则会输出如下所示的行:
# ./test.sh
./python-2.7.3p1.tgz
Run Code Online (Sandbox Code Playgroud)
我试过了:
if ls ./python* &> /dev/null; then
echo found Python
fi
Run Code Online (Sandbox Code Playgroud)
和
if ls ./python* 2>1 > /dev/null; then
echo found Python
fi
Run Code Online (Sandbox Code Playgroud)
和
if ls ./python* > /dev/null; then
echo found Python
fi
Run Code Online (Sandbox Code Playgroud)
没有什么是真正有效的。我只能重定向输出之一,不能同时重定向。
ric*_*ici 132
这将适用于任何 Posix 兼容的 shell:
ls good bad >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
你必须将stdout第一复制成标准错误之前; 如果您先复制它,stderr 将只指向 stdout 最初指向的内容。
Bash、 zsh 和其他一些 shell 也提供了快捷方式
ls good bad &>/dev/null
Run Code Online (Sandbox Code Playgroud)
这在命令行上很方便,但在旨在可移植的脚本中应避免使用。