Shell 脚本大小写转换

tr

tr 命令专门用来转换(或者删除)一些字符。例如 echo class | tr abc 012 得到 2l0ss。所以 echo $STR | tr ABCDEF abcdef 就可以实现大写转小写。

但是每次打全 26 个字母显得很愚蠢。tr 也支持一些常用的字符集合定义,例如用 [:upper:] 表示全部大写字母,用 [:lower:] 表示全部小写字母。而且这两个集合中的字符是有序的,即可以一一对应起来。

所以我们的方案是:

echo $STR | tr '[:upper:]' '[:lower:]'

其次,它也支持段描述形式的字符定义,就像这样使用:

echo $STR | tr '[A-Z]' '[a-z]'

调用脚本语言

调用更强脚本语言的解释器很显然也可以完成这样的任务。以下是几个举例:

echo $STR | python3 -c 'print(str.lower(input()))'
echo $STR | ruby -p -e '$_.tr! "A-Z", "a-z"'
echo $STR | awk '{ print tolower($0) }'
echo $STR | perl -ne 'print lc'

这些方案的完成程度不同。例如说 Python 的 input() 只读取一行,ruby 的方案 -p 选项其实是假设后面的语句在 while gets ... end 循环里执行。具体还要参考语言本身的定义。

Bash 4.0

4.0 添加了一个新特性,使用 ${STR,,} 取得全小写;${STR^^} 取得全大写。这应该是打字最少的方法了。

echo ${STR,,}
echo ${STR^^}

你可能感兴趣的:(Shell 脚本大小写转换)