変数セットがあり、その変数が定義されているかどうかをテストし、未定義の変数がある場合は条件を設定するとします。
次のように進めようとしています。
#!/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]
一致する最後の要素のインデックスを返します。pattern
0
あるいは、以下を使用して空の要素の数を計算することができます。
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
。数を取得するには追加してください#
。