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