Bash

為什麼 2>/dev/null 不起作用?

  • November 14, 2022

我想在我的腳本開始時詢問使用者 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 

但是即使使用 @>/dev/null 重定向,這兩條消息也會出現在控制台中。為什麼 ?

如果你不想有任何輸出(即沒有標準輸出和沒有錯誤),你需要使用這樣的重定向:

your_command > /dev/null 2>&1

僅針對錯誤:

cmd > /dev/null

並且只有標準輸出:

cmd 2> /dev/null

引用自:https://unix.stackexchange.com/questions/724818