Linux 如何在一行中将命令行参数传递给shell命令
我有一个特定的shell命令,它在ubuntu终端上运行 因此,在终端中运行时,我会这样调用它:Linux 如何在一行中将命令行参数传递给shell命令,linux,bash,shell,terminal,Linux,Bash,Shell,Terminal,我有一个特定的shell命令,它在ubuntu终端上运行 因此,在终端中运行时,我会这样调用它: mycommand 运行时,在终端下,它开始询问一些我应该录制的“提示”(用于配置),如下所示: 然后,另一次又一次地要求“确认” ,然后进行几乎10次其他不同的配置确认 我在那里录制不同的回应 所以我的目的是如何在一次中,仅在一行命令中完成它 我想试试这个: mycommand "yes" "yes "no" ..... "yes&
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
mycommandprintf“yes\nyes\nno\nyes\n”| mycommand
。在多行中,通过一个小脚本文件回答每个特定提示,您可以使用命令:expect