各要素がファイルの1行に等しいように、配列をスクリプトにファイル引数として提供するにはどうすればよいですか?

各要素がファイルの1行に等しいように、配列をスクリプトにファイル引数として提供するにはどうすればよいですか?

bashスクリプトは、引数がファイルであると想定していると仮定します。しかし、私たちはbash配列を持っており、配列の要素である行を含むファイルがあるかのように、何らかの方法でスクリプトを引数としてその配列を提供しようとしています。何をすべきか知りたいです。

myscrpt簡単な例として、ファイルパラメータを必要とする単一のコマンドを含むスクリプトがあります。

cat $1

配列があります

arr=( 1 3 5 )

arr引数が実際に内容が次のファイルであるかのようにスクリプトに引数として提供するにはどうすればよいですか?

1
3
5

効果的ですか myscript <(echo "${arr[@]}")

ありがとうございます。

ベストアンサー1

bashシェルまたは配列をサポートする他のシェルを使用している場合は、"${var[@]}"タイプ設定を使用できます。

a=(one two 'three four' five)
printf "%s\n" "${a[@]}"

printfたとえば、必要な要素に1行に1つの要素をパイプします。

printf "%s\n" "${a[@]}" | myscript

配列拡張を二重引用符で引用することは本当に重要です。それ以外の場合は、@文字が処理され、*配列拡張が空白で区切られた単語として(誤って)処理されます。

おすすめ記事