• ..

now

    条件分岐

    基本シンタックス

    条件を[ ]で囲むか、testの後に条件を書きます。

    if [ "a" = "a" ]
      then
        echo 1
      else
        echo 2
    fi
    # 1

    改行が必要なところに;を置くことで1行で書くこともできます。

    if test "a" = "a"; then echo 1; else echo 2; fi
    # 1

    [ ! ... ]test !のように!を付けると条件の結果が反対になります。

    文字列の比較

    同じ文字列

    上記で使ったように=で文字列同士が等しいかチェックできます。左右の"a""a"は等しいので1が表示されます。

    if test "a" = "a"; then echo 1; fi
    # 1

    違う文字列

    違うかをチェックしたい場合は!=を使います。

    if test "a" != "b"; then echo 2; fi
    # 2

    空文字列

    空文字列('')かどうか調べるときは-n(non zero length)または-z(zero length)オプションを使います。

    if test -z ''; then echo 1; fi
    # 1
    
    if test ! -n ''; then echo 1; fi
    # 1
    
    if test -n 'a'; then echo 1; fi
    # 1
    
    ### 数値の比較
    
    数値の比較では`=`は使いません。代わりに以下のようなフラグを使います。
    
    - `-eq` 左と右が同じ数値か
    - `-ne` 左と右が違う数値か
    - `-lt` 左のほうが小さい
    - `-le` 左は右以下
    - `-gt` 右のほうが大きい
    - `-ge` 右は左以上
    
    ```sh
    if test 1 -eq 1; then echo 1; fi
    # 1
    
    if test 1 -ne 2; then echo 1; fi
    # 1
    
    if test 1 -lt 2; then echo 1; fi
    # 1
    
    if test 1 -le 2; then echo 1; fi
    # 1
    
    if test 2 -gt 1; then echo 1; fi
    # 1
    
    if test 2 -ge 1; then echo 1; fi
    # 1