以非交互方式将参数传递给交互式程序

发布于 2025-01-13 00:49:19 字数 127 浏览 0 评论 0原文

我有一个 bash 脚本,它使用 read 命令以交互方式读取命令的参数,例如是/否选项。有没有办法在非交互式脚本中调用此脚本并传递默认选项值作为参数?

这不仅仅是我必须传递给交互式脚本的一个选项。

I have a bash script that employs the read command to read arguments to commands interactively, for example yes/no options. Is there a way to call this script in a non-interactive script passing default option values as arguments?

It's not just one option that I have to pass to the interactive script.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

内心荒芜 2025-01-20 00:49:20

许多方法都

可以

echo "yes
no
maybe" | your_program

可以

your_program < answers.txt

使用 此处文档(这 非常可读)

your_program << ANSWERS
yes
no
maybe
ANSWERS

使用 此处字符串

your_program <<< 
yes\nno\nmaybe\n'

Many ways

pipe your input

echo "yes
no
maybe" | your_program

redirect from a file

your_program < answers.txt

use a here document (this can be very readable)

your_program << ANSWERS
yes
no
maybe
ANSWERS

use a here string

your_program <<< 
yes\nno\nmaybe\n'
娇纵 2025-01-20 00:49:20

对于更复杂的任务,有 expect ( http://en.wikipedia.org/维基/期望)。
它基本上模拟用户,您可以编写脚本如何对特定程序输出和相关内容做出反应。

这也适用于像 ssh 这样禁止向其传输密码的情况。

For more complex tasks there is expect ( http://en.wikipedia.org/wiki/Expect ).
It basically simulates a user, you can code a script how to react to specific program outputs and related stuff.

This also works in cases like ssh that prohibits piping passwords to it.

Smile简单爱 2025-01-20 00:49:20

您可以将数据放入文件中并像这样重定向它:

$ cat file.sh
#!/bin/bash

read x
read y
echo $x
echo $y

脚本的数据:

$ cat data.txt
2
3

执行脚本:

$ file.sh < data.txt
2
3

You can put the data in a file and re-direct it like this:

$ cat file.sh
#!/bin/bash

read x
read y
echo $x
echo $y

Data for the script:

$ cat data.txt
2
3

Executing the script:

$ file.sh < data.txt
2
3
无人问我粥可暖 2025-01-20 00:49:20

只是想再添加一种方式。在别处找到的,很简单。
假设我想在命令行中为命令“execute_command”的所有提示传递“是”,那么我只需通过管道将“是”传递给它。

yes | execute_command

这将使用 yes 作为所有是/否提示的答案。

Just want to add one more way. Found it elsewhere, and is quite simple.
Say I want to pass yes for all the prompts at command line for a command "execute_command", Then I would simply pipe yes to it.

yes | execute_command

This will use yes as the answer to all yes/no prompts.

枫林﹌晚霞¤ 2025-01-20 00:49:20

您还可以使用 printf 将输入通过管道传输到脚本。

var=val
printf "yes\nno\nmaybe\n$var\n" | ./your_script.sh

You can also use printf to pipe the input to your script.

var=val
printf "yes\nno\nmaybe\n$var\n" | ./your_script.sh
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文