我有一个脚本,要求输入项目名称,然后将其转换为安全目录名称。我正在使用以下内容:
echo "Please enter the name of the new project (eg My New Project):"
read -r project_name
project_directory=$(echo "$project_name" | tr -s '[:upper:]' '[:lower:]' | tr -s '[:space:]')
我以为这样做很好,但是今天我注意到,如果我输入的单词同时包含2个或更多字符,那么重复的字母也会被删除。
Room = rom
Running = runing
对于为什么有些困惑,我的印象是脚本会将大写字符转换为小写并且空格将被删除,但显然不会。谁能解释为什么?
答案 0 :(得分:2)
因为tr -s
就是这样做的。在手册页中:
-s,--squeeze-repeats
将最后一个指定SET中列出的重复字符的每个序列替换为该字符一次
如果只希望将其从上转换为下,请删除-s
:
tr '[:upper:]' '[:lower:]'