【问题标题】:Case insensitive condition in BashBash 中不区分大小写的条件
【发布时间】:2014-08-15 07:20:21
【问题描述】:
我在 bash 脚本中使用大小写,但我想知道匹配大小写单词的正则表达式是什么。
例如:
case $name in
JOHN)
echo "hi" ;;
JOE)
echo "bye" ;;
*)
echo "nothing" ;;
esac
即使 $name 等于 john,我也想匹配 JOHN。
谢谢
【问题讨论】:
标签:
regex
bash
case
conditional-statements
【解决方案1】:
你可以使用:
shopt -s nocasematch
测试:
s='john'
shopt -s nocasematch
[ "$s" == "JOHN" ]] && echo "matched" || echo "no match"
matched
shopt -u nocasematch
[ "$s" == "JOHN" ]] && echo "matched" || echo "no match"
no match
【解决方案2】:
在测试之前将$name转换为大写,即
case "${name^^}" in
或(如果使用 bash 版本早于 4)
case "$(tr '[a-z]' '[A-Z]' <<< "$name")" in