如何检查转换为小写的字符串是否等于Bash Code中的某些内容?

时间:2015-11-13 19:39:36

标签: bash

#!/bin/bash
clear
echo "Write the name Alfred."
read usrinput
#if [ "$usrinput" -eq "Alfred" ]

我想检查的是字符串“usrinput”,转换为 小写,等于,在这种情况下,“alfred”。

我如何在Bash中做到这一点?

4 个答案:

答案 0 :(得分:5)

在Bash 4+中,您可以使用,,将变量转换为小写, 然后你可以将它的结果与你想要的lowecase目标字符串进行比较。

if [[ ${usrinput,,} = alfred ]]; then
    # do something
fi

答案 1 :(得分:3)

bash可以进行不区分大小写的匹配:

shopt -s nocasematch
if [[ $usrinput == alfred ]]; then
    echo "$usrinput matches"
fi
shopt -u nocasematch

答案 2 :(得分:1)

@janos建议的,,语法仅适用于bash的较新版本(4及更高版本)。在旧版本中,请尝试:

if [[ $(perl -pe 's/(.*)/\L$1/' <<< $usrinput) = alfred ]]; then
...

这也有效:

if [[ $(tr A-Z a-z <<< $usrinput) = alfred ]]; then
...

虽然{* 1}}语法在各种版本和Unix版本之间有所不同,但您可能需要阅读tr手册页以获取系统上的确切语法。

答案 3 :(得分:0)

您可以使用tr [:upper:] [:lower:]从大写转换为小写。例如:

$ echo "foo BAR" | tr [:upper:] [:lower:]
$ foo bar

然后你就可以在你的内心使用它了,如果&#39;条件...