代码之家  ›  专栏  ›  技术社区  ›  Mala

mac上bash中的大小写

  •  12
  • Mala  · 技术社区  · 14 年前

    我正在写一个bash脚本,它需要将字符串转换为小写。问题是我是在Mac上做的,所以“tr”不可用。我怎么能在Mac上做这个?

    我试图解决的问题是,我的脚本需要识别扩展名是.gif还是.jpg,我不想检查.jpeg、.jpeg、.jpeg、.jpeg等文件……如果有比转换成小写和测试gif、jpg和jpeg更聪明的方法,我洗耳恭听:)

    更新:
    我是个白痴。
    这个mac“没有”这些基本文本转换程序的原因是,我在做一些测试时用“hello”重写了path。

    4 回复  |  直到 6 年前
        1
  •  13
  •   ghostdog74    14 年前

    在bash中,可以使用nocaseglob

    shopt -s nocaseglob
    for file in *.jpg *.jpeg *.gif
    do
      echo "$file"
    done
    #turn off
    shopt -u nocaseglob
    

    一般来说,要转换案例,有多种方法

    echo "stRING" | awk '{print toupper($0)}'
    
    echo "STRING" | tr "[A-Z]" "[a-z]" # upper to lower
    
    echo "StrinNG" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' #lower to upper
    
        2
  •  6
  •   nachtigall    12 年前

    这是bash内置的:

    要将$Y转换为大写:

    y="this Is A test"
    echo "${y^^}"
    

    并将$Y转换为小写:

    y="THIS IS a TeSt"
    echo "${y,,}"
    
        3
  •  3
  •   crsuarezf    6 年前
    $ echo 'this IS some TEXT' | tr '[:upper:]' '[:lower:]'
    this is some text
    
        4
  •  2
  •   Chompi    13 年前

    在bash中可以使用 资本化 :

    echo "HelLo! how ArE you?" | capitalize -u
    
    echo "HelLo! how ArE you?" | capitalize -l
    
    echo "HelLo! how ArE you?" | capitalize -c