linux – 用于大写字母的Bash脚本检查字符串

我正在尝试检查任何大写字母的字符串.我的代码显示任何输入没有UPPER,可能是“sss”,“Sss”,“SSS”

if [[ "$pass" =~ [^a-zA-Z0-9] ]]
then
   echo "Upper found"
else
   echo "no upper"
fi

最佳答案 [^ a-zA-Z0-9]表示除a-z之外的任何内容,即小写字母,A-Z,即大写字母,以及0-9,即数字. sss,Sss,SSS都只包含字母,所以无法匹配.

[[ $password =~ [A-Z] ]]

如果密码包含任何大写字母,则为true.

例如,您应该在运行此类测试之前设置LC_ALL

$LC_ALL=cs_CZ.UTF-8 bash -c '[[ č =~ [A-Z] ]] && echo match'
match
$LC_ALL=C           bash -c '[[ č =~ [A-Z] ]] && echo match'
# exit-code: 1

[[:upper:]]应该始终有效.

点赞