为什么这个bash / shell脚本从字符串中删除重复的字符?

问题描述 投票:-1回答:1

我有一个脚本,询问项目名称,然后我想将该名称转换为安全目录名称。我正在使用以下内容:

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

只是有点困惑为什么,我的印象是脚本会将大写字符转换为小写,空格将被删除,但显然不是。有谁能解释为什么?

bash shell
1个回答
2
投票

因为这就是tr -s所做的。从手册页:

-s, --squeeze-repeats

替换最后一个指定SET中列出的重复字符的每个序列,并且只出现一次该字符

如果您只想将它​​从上到下转换,请删除-s

tr '[:upper:]' '[:lower:]'
© www.soinside.com 2019 - 2024. All rights reserved.