提示在shell脚本

时间:2015-07-28 07:22:40

标签: bash shell

我正在尝试使用超级用户权限中的read命令读取输入:

sudo read p

返回错误:

sudo: read: command not found

以下内容:

sudo -s <<EOF
read p
EOF

read正在被跳过。

那么,如何在shell脚本的根会话中使用read,还是有其他选择?关于上述原因不起作用的一点见解将不胜感激。

修改

我希望输入存储在变量p中以便稍后使用。基本上我想在heredoc中做到这一点,即p应该可以在heredoc中使用,在heredoc之外它无关紧要。

2 个答案:

答案 0 :(得分:3)

这可能有所帮助:

$ my_tty=`tty`

$ sudo -s <<EOF
read -p "Some prompt: " p < $my_tty
echo "You supplied '\$p'"... #use $p
EOF

#Output
Some prompt: somevalue
You supplied 'somevalue'...

但是,正如我已经说过的,$p之外的sudo值不可见。

您可能更喜欢使用它:

$ read -p "Some prompt: " p
$ sudo -s <<EOF
echo "You supplied '$p'"... #use $p
EOF

答案 1 :(得分:2)

sudo -s read p

你不能将sudo用于shell内置命令,因为sudo没有创建shell