ファイルから空白行を引数として別のスクリプト内の bash スクリプトに渡すにはどうすればよいですか?
詳細はこちら。script bar は、inputfile から行を読み取り、それらを配列に格納し、配列要素をオプションや引数としてスクリプト foo に渡します。入力ファイルは次のようになります。
-l file1
dirA
-c
-lc file2
file2
-cd file3
file4
(等) ここで何が起こるかです。スクリプト バーはファイルを 1 行ずつ読み取り、空白行に 2 つの空の要素を含めて、適切に配列を作成します。(配列の各要素をエコーすることでこれを確認しました。) しかし、bar がループ内で配列を走査し、各要素をスクリプト foo に渡すと、2 つの空の要素はスキップされます。そのため、スクリプト foo をゼロの引数とゼロのオプションで呼び出す必要がある場合は、単純に発生しません。スクリプト foo の他のすべての実行は、期待どおりに実行されます。
おそらく問題は、入力ファイルに改行文字しかないため、配列内のそれらの要素が空の文字列を含むのではなく、null になっていることだと思いました。そこで、入力ファイルの「空白」行にスペースを入れてみましたが、違いがあるかどうかを確認しましたが、結果は同じでした。
入力ファイルに空白行がある場合、または少なくとも空白文字だけの行がある場合に、bar が引数やオプションなしで foo を適切に呼び出すにはどうすればよいですか?
質問が明確であることを願っています。ご協力いただきありがとうございます!
編集。誰かがスクリプトを投稿することを提案したので、関連する部分は次のとおりです。
# read in input lines from file, add to array
index=0
while read line
do
tests[index]=$line
(( index++ ))
done < $@
# run tests
for stuff in ${tests[@]}
do
foo ${stuff} > /dev/null 2>&1
# capture and process the exit status of each foo run
done
IFS を設定していないかのように見えます。これは私のスクリプトの一部にすぎないためです。問題がどこかにあると確信しています。配列は空白行を含む 2 つの要素で適切に構築されますが、それらの要素はfor ... in
ループ内でスキップされます。