我有一个脚本,询问项目名称,然后我想将该名称转换为安全目录名称。我正在使用以下内容:
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
只是有点困惑为什么,我的印象是脚本会将大写字符转换为小写,空格将被删除,但显然不是。有谁能解释为什么?
因为这就是tr -s
所做的。从手册页:
-s, --squeeze-repeats
替换最后一个指定SET中列出的重复字符的每个序列,并且只出现一次该字符
如果您只想将它从上到下转换,请删除-s
:
tr '[:upper:]' '[:lower:]'