我试图编写一个setup.sh
脚本,在安装应用程序时搜索并安装所需的组件。如果找不到所需的组件,则会提示安装它。我已经使用了sudo apt-get install
,我想将用户提供的密码传递给sudo,如下所示:
read passwd
sudo apt-get install clisp <<EOF
$passwd
$passwd
EOF
但这不起作用。输入密码未传递给sudo。为什么这不会发生?我的使用有误吗?
答案 0 :(得分:4)
密码不是从标准输入读取,而是从“当前终端”读取。这不能通过重定向来改变。但是sudo
提供了一个选项-S
,它从标准输入而不是从终端读取密码。
编辑:解决整个问题的更好方法是避免截取密码。 sudo
如果需要密码本身则会询问密码。使用-A
选项,您还可以为此问题提供图形用户界面。由于sudo
为该输入保留时间戳,因此在接下来的15分钟内不会要求输入密码(默认情况下,即可配置)。因此,多个sudo
来电也不是问题。