我有一个bash脚本,它使用read
命令以交互方式读取命令参数,例如yes/no选项。有没有办法在非交互式脚本中将默认选项值作为参数传递给此脚本?以非交互方式将参数传递给交互式程序
这不只是一个选项,我必须传递给交互式脚本。
我有一个bash脚本,它使用read
命令以交互方式读取命令参数,例如yes/no选项。有没有办法在非交互式脚本中将默认选项值作为参数传递给此脚本?以非交互方式将参数传递给交互式程序
这不只是一个选项,我必须传递给交互式脚本。
如需更多e复杂任务有expect
(http://en.wikipedia.org/wiki/Expect)。 它基本上模拟一个用户,你可以编写一个脚本如何对特定的程序输出和相关的东西作出反应。
这也适用于像ssh
这种情况,禁止管道密码。
...虽然在SSH情况下适当的解决方案是切换到公钥认证。 – tripleee
你可以把数据放到一个文件并重新引导它像这样:
$ cat data.txt
2
3
执行脚本:
$ file.sh < data.txt
2
3
$ cat file.sh
#!/bin/bash
read x
read y
echo $x
echo $y
数据多种方式
管道y我们的输入
echo "yes
no
maybe" | your_program
重定向从文件
your_program < answers.txt
使用here document(这可能是非常可读)
your_program << ANSWERS
yes
no
maybe
ANSWERS
your_program <<< $'yes\nno\nmaybe\n'
只是想添加一个更多的方法。在别处找到它,而且很简单。 假设我想在命令行中为命令“execute_command”传递所有提示的yes,那么我只需向它输入yes即可。
yes | execute_command
这将使用yes作为所有yes/no提示的答案。
如果从标准你可以管你输入 –
由于这个问题得到读取重复很多,值得指出的是,它并不重要的语言交互程序被写入。它可能是一个读取标准输入或Erlang应用程序的C程序,或其他任何程序。有些东西是从命令行运行的,并且令人讨厌地要求交互式输入,并且您希望将其自动化。 – tripleee