ファイル名を含むか、設定されていない可能性のある bash スクリプトにいくつかの変数があります。それらの内容は、追加の引数としてプログラムに渡す必要があります。ただし、変数が設定されていない場合、これは空の引数を残します。
$ afile=/dev/null
$ anotherfile=/dev/null
$ unset empty
$ cat "$afile" "$empty" "$anotherfile"
cat: : No such file or directory
引用符がなければ、追加の引数が単純に省略されるため、問題なく機能します。ただし、変数にはスペースが含まれる場合があるため、ここで引用符で囲む必要があります。
空のテストで行全体を単純にラップできることを理解しています。
if [ -z "$empty" ]; then
cat "$afile" "$anotherfile"
else
cat "$afile" "$empty" "$anotherfile"
fi
しかし、変数ごとに 1 つのテストを行うと、巨大で複雑な決定木が作成されます。
これに対するよりコンパクトなソリューションはありますか?引用符で囲まれた空の変数を省略するようにbashを作成できますか?