ファイルからbashスクリプトにパラメータを渡す

ファイルからbashスクリプトにパラメータを渡す

4つのファイルがあります。

./
./myscript.sh
./arguments.txt
./test.sh

内部でmyscript.shファイルを実行しtest.sh、ファイルに含まれるパラメータを渡す必要がありますarguments.txt

myscript.sh例:

arguments=$(cat arguments.txt)
source test.sh $arguments

これは非常にうまく機能しますarguments.txt最大1つを含む場合ディスカッション:

firstargument 

代替案は次のとおりです。

++ source test.sh 'firstargument'

ただし、問題は2つ以上のパラメータにあります。これは次のことを行います。

++ source test.sh 'firstargument secondargument'

また、その中に含まれるパラメータの数もあらかじめわかりませんarguments.txt。 0個以上がある可能性があります。

ベストアンサー1

各行がarguments.txt別々の引数を表すと仮定すると、bash 4ではarguments.txt(ファイルの各行が配列要素として順番に指定されている)を使用して配列から読み取ることができ、mapfile配列をコマンドに渡すことができます。

mapfile -t <arguments.txt
source test.sh "${MAPFILE[@]}"

利点は、埋め込み行内でスペースが分割されないことです。

下位バージョンのbashを使用してください

IFS=$'\n' read -ra arr -d '' <arguments.txt
source test.sh "${arr[@]}"

おすすめ記事