./command < 几个参数

./command < 几个参数

如果我有一个名为“prog”的程序只需要一个参数,我可以写:

./prog <<< 1

但是如果我有一个程序需要 2 个参数,为什么这不起作用:

./prog <<< 2 3

我在谷歌上找不到答案。这怎么可能呢?

注意:我需要这个来写.sh

答案1

<<<操作符在手册页中有说明bash(1)。它用于“here strings”(概念上类似于 shell 语法中已经存在多年的“here documents”)。

语法:

command <<< word

...扩展word并将其传递给command标准输入。

它相当于:

echo word | command

如果您确实想将 1 和 2 都作为标准输入(而不是参数/参数)传递,您可以这样做:

./command <<< "1 2"

或者

./command <<< 1\ 2

基本上,您需要转义 1 和 2 之间的空格,以防止将输入分成两个单词。

答案2

我找不到对 bash 的“<<<”运算符的任何引用,但它似乎立即获取运算符后的文本并将其解析为第一个变量。

如果您正在编写 BASH 脚本,则无需这样做。您只需对每个变量使用 $X,然后将变量添加到脚本中即可。例如:

/bin/bash
echo "Usage:  $0 variable1 variable2"
echo "Variable 1 value is $1"
echo "Variable 2 value is $2"

因此,如果你将上述文件保存为“test.sh”,则使其可执行,然后运行它./test.sh hello world

它将输出用法:./test.sh variable1 variable2 变量 1 的值为 hello 变量 2 的值为 hello world

$0 = 脚本的名称。如果您想要传递 2 个带空格的参数,例如“Hello World”和“This is a test”,则可以将其调用为 ./test.sh "Hello World" "his is a test"

答案3

这就是我解决问题的方法:

#/bin/bash
(echo 1 2)  |  ./prog

相关内容