我正在尝试在 bash 脚本中将 kdialog 与 sudo 一起使用,方法是将 SUDO_ASKPASS 导出到具有该行的脚本
kdialog --password "enter password: "
并使用 sudo -A。这很好用,除了如果我在对话框中单击取消,sudo 会忽略它,并在延迟后重试密码输入。单行脚本以 kdialog 的退出状态退出,如果单击取消,则退出状态为非零。
有什么方法可以说服 sudo 放弃,就像在文本界面中输入 control-C 一样?
编辑-最终我弄清楚了发生了什么。如果单击取消,kdialog 会输出一个换行符。Sudo --askpass 将此解释为空白密码,并开始处理错误的密码。如果单击取消,则 askpass 脚本不得发出该换行符。一种方法是
pe=$(kdialog --password 'enter password: ') && echo "$pe"