Bash 大写字母的脚本检查字符串
Bash script check string for uppercase letter
我正在尝试检查字符串中是否存在任何大写字母。我的代码显示任何输入都没有上限,可能是 "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] ]]
如果密码包含任何大写字母则为真。
你应该在运行这种测试之前设置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:]]
应该总是有效。
你的正则表达式是错误的。使用 [A-Z] 或 [:upper:].
无论我如何 运行 这个脚本我都遇到了麻烦,直到我将它更改为让我的输入字符串为 $1,然后设置 pass=$1。我也稍微改变了正则表达式。下面是我最终能够正常工作的内容。然后我可以 运行 bash (script) John 并得到有效的回复。希望这有帮助。
pass=
if [[ "$pass" =~ ^[A-Z] ]]
then
echo "Upper found"
else
echo "No Upper"
fi
我正在尝试检查字符串中是否存在任何大写字母。我的代码显示任何输入都没有上限,可能是 "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] ]]
如果密码包含任何大写字母则为真。
你应该在运行这种测试之前设置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:]]
应该总是有效。
你的正则表达式是错误的。使用 [A-Z] 或 [:upper:].
无论我如何 运行 这个脚本我都遇到了麻烦,直到我将它更改为让我的输入字符串为 $1,然后设置 pass=$1。我也稍微改变了正则表达式。下面是我最终能够正常工作的内容。然后我可以 运行 bash (script) John 并得到有效的回复。希望这有帮助。
pass=
if [[ "$pass" =~ ^[A-Z] ]]
then
echo "Upper found"
else
echo "No Upper"
fi