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

时间:2016-10-27 22:00:35

标签: linux unix terminal git-bash uppercase

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

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

3 个答案:

答案 0 :(得分:3)

[^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:]]应始终有效。

答案 1 :(得分:0)

你的正则表达式错了。使用[A-Z]或[:upper:]。

https://en.wikipedia.org/wiki/Regular_expression

答案 2 :(得分:0)

无论如何运行它,我都遇到麻烦,直到更改它以使输入字符串为$ 1,然后设置pass = $ 1。我也更改了正则表达式。我终于可以正常工作的内容如下。然后,我可以运行bash(脚本)John并获得有效的响应。希望这会有所帮助。

pass=$1
if [[ "$pass" =~ ^[A-Z] ]]
then
   echo "Upper found"
else
   echo "No Upper"
fi