`set -u`を使用して空の配列拡張をバッシュ
私はを持つbashスクリプトを書いていてset -u、空の配列の展開に問題があります。bashは、展開中に空の配列を未設定の変数として扱うようです。 $ set -u $ arr=() $ echo "foo: '${arr[@]}'" bash: arr[@]: unbound variable (declare -a arrどちらも役に立ちません。) これに対する一般的な解決策は、${arr[@]-}代わりに使用することです。したがって、(「未定義」)空の配列の代わりに空の文字列に置き換えます。ただし、これは適切な解決策ではありません。単一の空の文字列が含まれている配列と空の配列を区別できないためです。(@ -expansionはbashで特別であり、に展開"${arr[@]}"される"${arr[0]}" "${arr[1]}" …ため、コマンドラインを構築するための完璧なツールになります。) $ countArgs() { echo $#; } $ countArgs a b c 3 $ countArgs 0 $ countArgs "" 1 $ brr=("") $ countArgs "${brr[@]}" 1 $ countArgs "${arr[@]-}" …