检查函数中的字符串(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)只是数字,小写和“_”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

shell检查密码强度

shell检查密码强度

从bash中的字符串中删除所有特殊字符和大小写

ChatGTP,生成正则表达式-至少包含一个大小写字母和数字且有位数限制

ChatGTP,生成正则表达式-至少包含一个大小写字母和数字且有位数限制

密码的校验.大小写字母,数字,特殊字符中的至少3种