次の式は、if-else if文を結合する正しい方法ですか?
if [ $TO_MAJOR -eq 7 ] ; then
if [ $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 ]; then
echo "AE port not supported"
elif [ $TO_MINOR -lt 3 ] ; then
echo "AE port not supported"
fi
fi
到着
if [ [ $TO_MAJOR -eq 7 ] -a [ [ $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 ] -o [ $TO_MINOR -lt 3 ] ] ]; then
echo "AE port not supported"
fi
答え1
2番目のコードには括弧が多すぎます。 [
例の同義語ですtest
。したがって、目的のタスクを実行する方法は2つあります。 1つは、単一のテストステートメントですべての操作を実行することです。この場合は、括弧セットのみを使用してください。
if [ \( $TO_MAJOR -eq 7 -a $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 \) -o $TO_MINOR -lt 3 ]; then
もう1つは、シェルの&&
and||
演算子を使用して複数のテストコマンドをリンクすることです。
if [ $TO_MAJOR -eq 7 ] && ...
[
しかし、whileはと同義であり、test
宣言[
では意味がないため、あなたが持っていることはうまくいきませんtest
。