#!/bin/bash
clear
echo "Write the name Alfred."
read usrinput
#if [ "$usrinput" -eq "Alfred" ]
我想检查的是字符串“usrinput”,转换为 小写,等于,在这种情况下,“alfred”。
我如何在Bash中做到这一点?
答案 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;条件...