【问题标题】:How can I pass multiple arguments and execute shell script with echo?如何传递多个参数并使用 echo 执行 shell 脚本?
【发布时间】:2022-10-24 22:21:55
【问题描述】:

我想执行一个交互式 shell 脚本,它要求使用“echo”命令进行多个用户输入。脚本执行如下:

./install.sh
are you sure you want to install (y/n) *<required user input>*
enter root password: *<required user input>*

Installation Successful.

我想在没有任何进一步提示的情况下在一行命令中执行 install.sh。为此,我尝试了“回声”,但似乎不起作用:

echo password | echo y | ./install.sh

如何使用所有输入值(使用 echo 或其他任何东西)一次性执行此脚本?

【问题讨论】:

  • 在命令前面加上sudo 应该不需要输入root 密码。注意sudo 必须放在./install.sh 命令之前,而不是echo 命令之前。例如,echo y | sudo ./install.sh

标签: linux shell echo


【解决方案1】:

echo password | echo y | ./install.sh

你已经接近了,但是echo 不能很好地适应管道的中间:它不会对它的标准输入做任何事情,所以你会丢失管道早期的任何东西。

你想groupecho 语句和管道进入安装脚本:

{
  echo y
  echo "$password"
} | ./install.sh

或者,使用printf 命令(重复使用格式字符串,直到消耗所有参数)

printf '%s
' "y" "$password" | ./install.sh

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 2020-08-27
    • 2016-06-13
    • 2010-10-17
    • 2018-10-01
    • 2011-05-30
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多