1

私は現在、プログラムを正常に呼び出す次のようなbashスクリプトを持っていますprog:

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

var1andの代わりにvar2、配列内の各要素 ($@ を使用しているため、長さは不明) をprog同じ方法で渡すにはどうすればよいでしょうか?

4

3 に答える 3

2

厳密に言えば、次のようなものが必要です

for line in "$@"; do
    echo "$line"
done | prog

ヒアドキュメントではありませんが、同じ効果があります。Here ドキュメントと配列は、2 つの異なるユース ケース用に開発されました。

さらに厳密に言えば、$@は配列ではありませんが、配列のように振る舞うのは非常に困難です。:)

于 2013-06-06T15:33:47.240 に答える
2

配列の各要素をループして、各値をプログラムにエコーできます。

vars=('foo' 'foo bar' 'bar')
for var in "${vars[@]}"; do echo $var; done | prog

FAIRNESS UPDATE:@chepnerは、この回答に数秒で私を打ち負かしました:)

于 2013-06-06T15:34:11.783 に答える
-1

私の知る限り、変数を渡すことはできませんが、引数を渡すことはできるので、ここで修正します:

prog $VAR1 $VAR2 <<EOF

内部でprogは次を使用できます。

ARR=($@)

すべての位置パラメータを variable に保存しますARR

于 2013-06-06T15:35:16.887 に答える