为什么 2>/dev/null 不起作用?

Nel*_*ira -1 bash sudo shell-script

我想在脚本开始时询问用户 sudo 密码,然后在运行脚本的其余部分之前测试该密码是否正确。

经过一段时间的搜索,我得到了这个测试脚本:

SUDO_PWD=whatever
sudo -k   # <- So I can test it
echo $SUDO_PWD | sudo -Svp '' 2>/dev/null 
sudo_response=$(SUDO_ASKPASS=/bin/false sudo -A whoami @>/dev/null) 
if [ "$sudo_response" = "root" ]; then 
    echo "sudo" 
else  
    echo "no sudo" 
fi 
Run Code Online (Sandbox Code Playgroud)

但是,即使使用 @>/dev/null 重定向,这两条消息也会出现在控制台中。为什么 ?

小智 5

如果您不想有任何输出(即没有标准输出且没有错误),则需要使用如下重定向:

your_command > /dev/null 2>&1
your_command &> /dev/null
Run Code Online (Sandbox Code Playgroud)

仅显示错误并丢弃标准输出:

your_command > /dev/null
Run Code Online (Sandbox Code Playgroud)

并仅显示标准输出并丢弃错误:

your_command 2> /dev/null
Run Code Online (Sandbox Code Playgroud)