忽略用户输入的大小写

忽略用户输入的大小写

我正在尝试编写一个脚本来捕获用户输入。该脚本应该忽略大小写。

考虑这个脚本foo.sh

if [ $1 == "string" ]; then
  echo true
else
  echo false
fi

如果输入的foo.shSTRING或者StRiNg结果将为假。

我怎样才能忽略条件中的情况if

答案1

假设您正在使用bash 4.0+

${1,,}

否则,tr或者awk应该工作:

var=$(echo "$1" | awk '{print tolower($0)}')
var=$(echo "$1" | tr '[:upper:]' '[:lower:]')

摘要:

  • Awk 接收输入并$0使用内置tolower()函数后简单地打印(整个输入行)。

  • Tr 看起来很不言自明,但如果您对此有任何疑问,请告诉我。

答案2

declare具有小写功能:

declare -l str=$1
[[ $str = "string" ]] && echo true || echo false

相关内容