Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在一行中将命令行参数传递给shell命令_Linux_Bash_Shell_Terminal - Fatal编程技术网

Linux 如何在一行中将命令行参数传递给shell命令

Linux 如何在一行中将命令行参数传递给shell命令,linux,bash,shell,terminal,Linux,Bash,Shell,Terminal,我有一个特定的shell命令,它在ubuntu终端上运行 因此,在终端中运行时,我会这样调用它: mycommand 运行时,在终端下,它开始询问一些我应该录制的“提示”(用于配置),如下所示: 然后,另一次又一次地要求“确认” ,然后进行几乎10次其他不同的配置确认 我在那里录制不同的回应 所以我的目的是如何在一次中,仅在一行命令中完成它 我想试试这个: mycommand "yes" "yes "no" ..... "yes&

我有一个特定的shell命令,它在ubuntu终端上运行

因此,在终端中运行时,我会这样调用它:

mycommand
运行时,在终端下,它开始询问一些我应该录制的“提示”(用于配置),如下所示:

然后,另一次又一次地要求“确认”

,然后进行几乎10次其他不同的配置确认 我在那里录制不同的回应

所以我的目的是如何在一次中,仅在一行命令中完成它

我想试试这个:

mycommand "yes" "yes "no" ..... "yes"
但那是高

建议???

如果
mycommand
是从stdin而不是从tty读取的,那么您可以通过将响应回送到命令中来逃脱。这实际上是存在
yes
命令的主要原因之一:

yes | mycommand
将对所有提示响应“y”

yes foo | mycommand
将以“foo”响应所有提示。如果你想对某些人回答“是”,对另一些人回答“否”,你可以发挥创造力,做如下事情:

yes yes | sed -e 3,5s/yes/no/ -e 10q | mycommand

(上面将对前2个提示回答“是”,然后对第3到第5个提示回答“否”,然后对第6到第10个提示回答“是”。

您可以使用“@William Pursell”所写的
打印。出于习惯,我倾向于使用
echo

$ cat /tmp/x.sh
#!/bin/sh

read -p "alpha: " alpha
read -p "beta: "  beta
read -p "gamma: " gamma

echo "retrieved:"
echo "\$alpha: $alpha"
echo "\$beta:  $beta"
echo "\$gamma: $gamma"

$ echo "a\nb\nc" | /tmp/x.sh
retrieved:
$alpha: a
$beta:  b
$gamma: c
或者,对我来说更直观一些:

$ (echo "a"; echo "multiple words"; echo optional quotes) | /tmp/x.sh
retrieved:
$alpha: a
$beta:  multiple words
$gamma: optional quotes

正如“@Jean Loup Sabatier”所提到的<如果您的输入需要根据某些逻辑进行更改,则“代码>期望”可以添加逻辑,但这是一个不同的问题。

如果您知道所有必需的输入,您可以创建一个包含以下答案的文件:

答案.in:

yes
yes
no
yes
然后

mycommand << answers.in

mycommand
printf“yes\nyes\nno\nyes\n”| mycommand
。在多行中,通过一个小脚本文件回答每个特定提示,您可以使用命令:expect