Moo*_*oom 20 command-line sudo
正如标题中所说,我需要检查是否在 shell 中为此终端会话输入了 sudo 密码(也就是,如果我现在拥有 sudo 权限)。
如果我有,我想做一件事,如果我没有,那么它不应该提示我去做,让我做另一件事。
所以在伪代码中它看起来像这样:
if (sudo = true)
echo "i got sudo"
else
echo "i dont have sudo"
fi
Run Code Online (Sandbox Code Playgroud)
但是我为此找到的所有命令在尝试检查时总是提示我输入 sudo 密码。
基本思想是脚本可以(并且会)在多个地方要求提供 sudo 密码,但我不想打印出“脚本现在将要求您提供 sudo 密码”。如果已经输入(这意味着它不会要求输入 sudo 密码)。
希望可以有人帮帮我。
Rad*_*anu 26
您可以使用:
if sudo -n true 2>/dev/null; then
echo "I got sudo"
else
echo "I don't have sudo"
fi
Run Code Online (Sandbox Code Playgroud)
该-n
(非交互式)选项阻止sudo
从提示用户输入密码。如果命令运行需要密码,sudo
将显示错误消息(重定向到/dev/null
)并退出。如果不需要密码,则此表达式为真:sudo -n true 2>/dev/null
。