スクリプトの冒頭で、ユーザーに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リダイレクトを使用しても、両方のメッセージがコンソールに表示されます。なぜ?
ベストアンサー1
出力が望ましくない場合(標準出力やエラーなし)、次のリダイレクトを使用する必要があります。
your_command > /dev/null 2>&1
your_command &> /dev/null
エラーのみを表示し、標準出力を削除します。
your_command > /dev/null
標準出力を表示し、エラーを削除します。
your_command 2> /dev/null