mac上bash中的大写字母到小写字母

Mal*_*ala 16 macos bash case

我正在编写一个bash脚本,需要将字符串转换为小写.问题是我在mac上这样做,所以'tr'不可用.我怎么能在mac上这样做呢?

我试图解决的问题是我的脚本需要识别扩展名是.gif还是.jpg - 我不想检查.jpeg,.jPeg,.JPEG,.JPeg等等...如果有一种更聪明的方法,只需转换为小写并测试gif,jpg和jpeg,我都是耳朵:)

更新:
我是个白痴.
这个mac"没有"这些基本文本转换程序的原因是因为我在做一些测试时用"hello"覆盖了PATH> _ <

gho*_*g74 14

在bash中,你可以使用nocaseglob

shopt -s nocaseglob
for file in *.jpg *.jpeg *.gif
do
  echo "$file"
done
#turn off
shopt -u nocaseglob
Run Code Online (Sandbox Code Playgroud)

一般来说,转换案件,各种方式

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
Run Code Online (Sandbox Code Playgroud)


nac*_*all 6

这是内置于bash:

将$ y转换为大写:

y="this Is A test"
echo "${y^^}"
Run Code Online (Sandbox Code Playgroud)

并将$ y转换为小写:

y="THIS IS a TeSt"
echo "${y,,}"
Run Code Online (Sandbox Code Playgroud)

  • 没有在我的Yosemite安装工作.....有一个"坏替代"任何想法? (10认同)
  • @MisterJ我尚未更新到优胜美地,但我怀疑它使用的版本与Mavericks可用的版本相似,该版本为3.2.x(约8岁)。不幸的是,这些案例修改运算符是在Bash 4中引入的。我建议使用[```brew install bash`''](http://brew.sh/)来获得现代版本。 (2认同)
  • @Exide是的我确认bash yosemite版本是旧的,我有其他类似的问题.使用其他方法解决了这些问题(比如这个方法的旧tr). (2认同)