我目前有一个像这样的bash脚本,它成功调用了程序prog
:
#!/bin/bash
var1=hello
var2=world
prog <<EOF
$var1
$var2
EOF
而不是var1
和var2
,我将如何以相同的方式将数组中的每个元素(未知长度,因为我使用$ @)传递给prog
? / p>
答案 0 :(得分:2)
严格地说,你会想要像
这样的东西for line in "$@"; do
echo "$line"
done | prog
这不是这里的文件,但它具有相同的效果。这里为两种不同的用例开发了文档和数组。
更严格地说,$@
不是一个数组,尽管它很难像一个人那样行事。 :)
答案 1 :(得分:1)
您可以遍历数组的每个元素并将每个值回显到程序中:
vars=('foo' 'foo bar' 'bar')
for var in "${vars[@]}"; do echo $var; done | prog
FAIRNESS UPDATE :@chepner在几秒钟内打败了我这个答案:)
答案 2 :(得分:-1)
据我所知,您无法传递变量,但您可以传递参数,所以这是一个修复:
prog $VAR1 $VAR2 <<EOF
在prog
内你可以使用:
ARR=($@)
将所有位置参数保存到变量ARR
。