Zshの配列。次の変数が定義されていないことを確認してください。

Zshの配列。次の変数が定義されていないことを確認してください。

変数セットがあり、その変数が定義されているかどうかをテストし、未定義の変数がある場合は条件を設定するとします。

次のように進めようとしています。

#!/usr/bin/env zsh
d=("$VAR1" "$VAR2" "$VAR3")    
for x in $d;
do
    if <variable_x_not_defined>
       UNDEFINED_VARIABLES="True"
    fi
done

<variable_x_not_defined>さまざまな条件付きオプションをテストしましたが、幸運ではありませんでした。ここで配列を正しく使用していますか? Zshでこれを行うにはどうすればよいですか?

ベストアンサー1

配列に空の要素が1つ以上含まれていることを確認するには、次のようにします。

if ((i = array[(I)])); then
  echo "array contains at least one empty element (${i}th)"
else
  echo "array doesn't contain empty elements"
fi

見つからない場合、または(I)$array[(I)pattern]一致する最後の要素のインデックスを返します。pattern0

あるいは、以下を使用して空の要素の数を計算することができます。

if ((n = ${(M)#array[@]:#})); then
  echo "array contains $n empty elements"
else
  echo "array doesn't contain any empty element"
fi

${(M)array[@]:#pattern}一致する要素に展開されますpattern。数を取得するには追加してください#

おすすめ記事