判斷符號 [[ ]]

  1. 雙中括號 [[ ]] 比較時,右邊不加引號時是一個模式,用 == 符號比較是否相等,其中 ? 代表任意一個字字元。
    [dywang@dywmsi zzz]$ [[ abcd == abc ]] && echo Y || echo N
    N
    [dywang@dywmsi zzz]$ [[ abcd == abc. ]] && echo Y || echo N
    N
    [dywang@dywmsi zzz]$ [[ abcf == abc? ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ abcd == abc? ]] && echo Y || echo N
    Y
    
  2. == 符號比較是否相等,其中 * 代表任意字元 0 個以上。
    [dywang@dywmsi zzz]$ [[ abc == abc* ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ abc., == abc* ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ abcdf == abc* ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ abcdfe == abc* ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ abcd == abc* ]] && echo Y || echo N
    Y
    
  3. > < 符號比較是大小時,是比較字串的 ASCII 碼大小。
    [dywang@dywmsi zzz]$ [[ abc > abe ]] && echo Y || echo N
    N
    [dywang@dywmsi zzz]$ [[ abf > abe ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ 12 > 13 ]] && echo Y || echo N
    N
    [dywang@dywmsi zzz]$ [[ 192 > 53 ]] && echo Y || echo N
    N
    
  4. 使用 =~ 符號判斷是否匹配,支援正規表示式。
    [dywang@dywmsi zzz]$ [[ abcd =~ abc. ]] && echo Y || echo N
    Y
    [dywang@dywmsi zzz]$ [[ 1abcd2 =~ abc. ]] && echo Y || echo N
    Y
    
  5. 使用 =~ 符號判斷字串是否是正負數字?
    [dywang@dyw219 zzz]$ num='-19' ; [[ $num =~ ^-?[0-9]+$ ]] && echo Y || echo N
    Y
    [dywang@dyw219 zzz]$ num='19' ; [[ $num =~ ^-?[0-9]+$ ]] && echo Y || echo N
    Y
    [dywang@dyw219 zzz]$ num='19 ' ; [[ $num =~ ^-?[0-9]+$ ]] && echo Y || echo N
    N