ifステートメントに2つ以上の条件を含めることはできますか?
if [ "$name" != "$blank" && "$age" == "$blank" ]; then
可能ですか?そうでない場合はどうすればよいですか?
答え1
(POSIX標準)構文を使用すると、[ expression ]
次のものを使用できます。
if [ "$name" != "$blank" ] && [ "$age" = "$blank" ]; then
echo true
fi
ただし、[[ expression ]]
構文では、次の2つの条件を使用できます。
if [[ $name != "$blank" && $age == "$blank" ]]; then
echo true!
fi
[[
overの2つの利点[
:
- and にはトークン化やグローバル拡張がないため、多くの引数を引用符で囲む必要はありません(
[[
引用符がない場合はパターンとして解釈されるandの右側を除く)。==
!=
[[
使いやすく、エラーが発生する可能性が低くなります。
欠点[[
:ksh、bash、zshでのみサポートされ、通常のBourne / POSIX shではサポートされていません。
[[
参照および[
比較のための私のよいページバッシュFAQ
答え2
言及されていない別の可能性があります@SepahradSalour-a
演算子を使用しています:
if [ "$name" != "$blank" -a "$age" = "$blank" ]; then
さて、すべての変数を正しく引用してください。それぞれ。