sid*_*rma 101 bash interactive non-interactive
我有一个bash脚本,它使用该read
命令以交互方式读取命令的参数,例如是/否选项.有没有办法在非交互式脚本中调用此脚本将默认选项值作为参数传递?
这不仅仅是我必须传递给交互式脚本的一个选项.
gle*_*man 139
很多种方法
输入您的输入
echo "yes
no
maybe" | your_program
Run Code Online (Sandbox Code Playgroud)
从文件重定向
your_program < answers.txt
Run Code Online (Sandbox Code Playgroud)
使用这里的文件(这可以很容易阅读)
your_program << ANSWERS
yes
no
maybe
ANSWERS
Run Code Online (Sandbox Code Playgroud)
使用here字符串
your_program <<< $'yes\nno\nmaybe\n'
Run Code Online (Sandbox Code Playgroud)
Dan*_*xan 39
对于更复杂的任务,有expect
(http://en.wikipedia.org/wiki/Expect).它基本上模拟用户,您可以编写脚本如何对特定程序输出和相关内容做出反应.
这也适用于ssh
禁止管道密码的情况.
Gur*_*uru 13
您可以将数据放入文件中并像这样重定向:
$ cat file.sh
#!/bin/bash
read x
read y
echo $x
echo $y
Run Code Online (Sandbox Code Playgroud)
脚本数据:
$ cat data.txt
2
3
Run Code Online (Sandbox Code Playgroud)
执行脚本:
$ file.sh < data.txt
2
3
Run Code Online (Sandbox Code Playgroud)
小智 7
只想添加一个方法.在其他地方找到它,非常简单.假设我想在命令行中为命令"execute_command"的所有提示传递yes,那么我只是管道是的.
yes | execute_command
Run Code Online (Sandbox Code Playgroud)
这将使用yes作为所有是/否提示的答案.
您还可以使用 printf 将输入通过管道传输到您的脚本。
var=val
printf "yes\nno\nmaybe\n$var\n" | ./your_script.sh
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
94526 次 |
最近记录: |