关于macos:mac上的bash中的大写字母到小写字母

uppercase to lowercase in bash on a mac

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

我要解决的问题是,我的脚本需要识别扩展名是.gif还是.jpg,而我不想检查.jpeg,.jpeg,.jpeg,.jpeg等等…如果有一种比转换为小写字母和测试gif、jpg和jpeg更聪明的方法,我会全神贯注的:)

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


在bash中,您可以使用nocaseglob

1
2
3
4
5
6
7
shopt -s nocaseglob
for file in *.jpg *.jpeg *.gif
do
  echo"$file"
done
#turn off
shopt -u nocaseglob

一般来说,转换案例的方式多种多样

1
2
3
4
5
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


它内置于bash中:

要将$Y转换为大写:

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

并将$Y转换为小写:

1
2
y="THIS IS a TeSt"
echo"${y,,}"


1
2
$ echo 'this IS some TEXT' | tr '[:upper:]' '[:lower:]'
this is some text

在bash中,可以使用大写:

1
2
3
4
5
echo"HelLo! how ArE you?" | capitalize -u

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

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