sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

D1341.locale-and-casematch.sh (693B)


      1 #!/bin/bash
      2 
      3 LANG=en_US.utf8
      4 
      5 
      6 # Bash-4.4 以下で失敗する。
      7 function check.1 { [[ A == [a-z] ]] && echo "NG ($1)"; }
      8 check.1 check.1
      9 
     10 # Bash-4.1 以下で失敗する
     11 function check.2 { LC_ALL= LC_COLLATE=C check.1 "$1" 2>/dev/null; }
     12 check.2 check.2
     13 
     14 # これならば OK。
     15 function check.3 {
     16   local LC_ALL= LC_COLLATE=C
     17   check.1 "$1"
     18 } 2>/dev/null
     19 check.3 check.3
     20 
     21 # つまり、LC_ALL= LC_COLLATE=C command の形式を用いると
     22 # Bash 4.1 以下では効果がないという事を意味する。
     23 # 既存の同形式は全て置き換える必要がある。
     24 
     25 function check.4 {
     26   local LC_ALL= LC_COLLATE=C
     27   [[ A == [a-z] ]] && echo "NG ($1)"
     28 } 2>/dev/null
     29 check.4 check.4