私は現在、プログラムを正常に呼び出す次のようなbashスクリプトを持っていますprog
:
#!/bin/bash
var1=hello
var2=world
prog <<EOF
$var1
$var2
EOF
var1
andの代わりにvar2
、配列内の各要素 ($@ を使用しているため、長さは不明) をprog
同じ方法で渡すにはどうすればよいでしょうか?
厳密に言えば、次のようなものが必要です
for line in "$@"; do
echo "$line"
done | prog
ヒアドキュメントではありませんが、同じ効果があります。Here ドキュメントと配列は、2 つの異なるユース ケース用に開発されました。
さらに厳密に言えば、$@
は配列ではありませんが、配列のように振る舞うのは非常に困難です。:)
配列の各要素をループして、各値をプログラムにエコーできます。
vars=('foo' 'foo bar' 'bar')
for var in "${vars[@]}"; do echo $var; done | prog
FAIRNESS UPDATE:@chepnerは、この回答に数秒で私を打ち負かしました:)
私の知る限り、変数を渡すことはできませんが、引数を渡すことはできるので、ここで修正します:
prog $VAR1 $VAR2 <<EOF
内部でprog
は次を使用できます。
ARR=($@)
すべての位置パラメータを variable に保存しますARR
。