将bash数组传递给stdin

时间:2013-06-06 15:24:50

标签: bash stdin

我目前有一个像这样的bash脚本,它成功调用了程序prog

#!/bin/bash
var1=hello
var2=world
prog <<EOF
$var1
$var2
EOF

而不是var1var2,我将如何以相同的方式将数组中的每个元素(未知长度,因为我使用$ @)传递给prog? / p>

3 个答案:

答案 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