Bash脚本,如何删除尾随子串,不区分大小写?

bas*_*er1 5 string bash case-insensitive

我正在修改一个读取用户电子邮件的脚本.这很简单,太简单了.

echo -n "Please enter your example.com email address: "
read email
email=${email%%@example.com} # removes trailing @example.com from email
echo "email is $email"
Run Code Online (Sandbox Code Playgroud)

这有效,但仅适用于小写@ example.com.我怎么能修改它来删除尾随@ example.com,不区分大小写?

kan*_*aka 5

如果你有bash 4:

email=${email,,}
email=${email%%@example.com}
Run Code Online (Sandbox Code Playgroud)

否则,也许只使用tr:

email=$(echo "${email}" | tr "A-Z" "a-z")
email=${email%%@example.com}
Run Code Online (Sandbox Code Playgroud)

更新:

如果您只想剥离主机(任何主机),那么这可能就是您想要的:

email=${email%%@*}
Run Code Online (Sandbox Code Playgroud)

  • 应该注意的是,这两个都将地址的所有部分都转换为小写。 (2认同)