检查函数中的字符串(bash)只是数字,小写和“_”[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查函数中的字符串(bash)只是数字,小写和“_”[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
在bash脚本中我有一个函数,我想在其中检查传递的参数是否只包含小写字母,数字和“_”:
还要检查不仅仅是数字,只能从一个字母开始
代码:
function check_name ()
if [[ $1 != [a-z0-9\\_]; then
echo The name can contain only lowercase letters, numbers and _
return 1
fi
代码失败,因为条件总是为真并返回1
答案
你可以这样做:
[STEP 115] $ var=abc123_
[STEP 116] $ [[ -z $var//[_[:digit:][:lower:]] ]] && echo yes || echo no
yes
[STEP 117] $ var=ABC
[STEP 118] $ [[ -z $var//[_[:digit:][:lower:]] ]] && echo yes || echo no
no
[STEP 119] $
要么
[STEP 125] $ var=abc123_
[STEP 126] $ [[ $var == +([_[:digit:][:lower:]]) ]] && echo yes || echo no
yes
[STEP 127] $ var=ABC
[STEP 128] $ [[ $var == +([_[:digit:][:lower:]]) ]] && echo yes || echo no
no
[STEP 129] $
要么
[STEP 130] $ var=abc123_
[STEP 131] $ [[ $var =~ ^[_[:digit:][:lower:]]+$ ]] && echo yes || echo no
yes
[STEP 132] $ var=ABC
[STEP 133] $ [[ $var =~ ^[_[:digit:][:lower:]]+$ ]] && echo yes || echo no
no
[STEP 134] $
以上是关于检查函数中的字符串(bash)只是数字,小写和“_”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
ChatGTP,生成正则表达式-至少包含一个大小写字母和数字且有位数限制