![](/img/trans.png)
[英]In a UNIX/Linux script, how can I check if the user inputs a lowercase letter or uppercase letter?
[英]Bash script check string for uppercase letter
我正在尝试检查任何大写字母的字符串。 我的代码显示任何输入都没有 UPPER,可能是“sss”、“Sss”、“SSS”
if [[ "$pass" =~ [^a-zA-Z0-9] ]]
then
echo "Upper found"
else
echo "no upper"
fi
[^a-zA-Z0-9]
表示除az
之外的任何内容,即小写字母, AZ
,即大写字母和0-9
,即数字。 sss
, 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:]]
应该始终有效。
你的正则表达式是错误的。 使用 [AZ] 或 [:upper:]。
无论我如何运行这个脚本,我都遇到了问题,直到我将其更改为让我的输入字符串为 $1,然后设置 pass=$1。 我也稍微改变了正则表达式。 我终于可以正常工作的内容如下。 然后我可以运行 bash (script) John 并得到一个有效的响应。 希望这可以帮助。
pass=$1
if [[ "$pass" =~ ^[A-Z] ]]
then
echo "Upper found"
else
echo "No Upper"
fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.