检查函数中的字符串(bash)仅包含数字,小写字母和“ _”

时间:2018-09-15 12:33:19

标签: linux 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

1 个答案:

答案 0 :(得分: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] $