linux - Bash 脚本检查大写字母的字符串

标签 linux unix terminal git-bash uppercase

我正在尝试检查字符串中是否存在任何大写字母。我的代码显示任何输入都没有上限,可能是“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,即数字。 sssSssSSS 都只包含字母,因此无法匹配。

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

如果密码包含任何大写字母则为真。

你应该在运行这种测试之前设置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:]] 应该始终有效。

关于linux - Bash 脚本检查大写字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40294902/

相关文章:

c - 我想将字符串写入文件顶部。但它不起作用。(在c中)

linux - 有没有在linux中打开图形终端的惯用方法?

shell - 并行执行多个子Shell脚本的错误处理

linux - execv() 和 fork() 的时间浪费

linux - 在 *nix shell 中更容易导航

linux - LVM Linux。我的任务中的 LE 是什么意思?可能是错字

php - Symfony2 添加新路由后返回空白页

C: dup 和 close-on-exec

java - 为什么在我的字符串数组中的字符串之前打印 null?

macos - `open -a Chrome` 返回 `Unable to find application named Chrome`