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[@]}"