Bash命令检查变量名是否有效

Luk*_*kap 3 linux shell naming-conventions variable-names

#check if the name is valid
function myfunc()
{
    #check "${1}"
    #echo "valid/invalid"
}

#these should return valid
myfunc "my_number"
myfunc "my_number1"

#these should return ivalid 
myfunc "1my_number"
myfunc "1my _number"
myfunc "my number"
myfunc "my_number?"
Run Code Online (Sandbox Code Playgroud)

等变量名只能有字母,数字(但不能在开头),...和java的所有规则一样......

我可以使用任何功能吗?我不想重新发明轮子......

dog*_*ane 6

将变量名称与正则表达式匹配,如下所示:

myfunc() {
    if [[ "$1" =~ ^[a-z][a-zA-Z0-9_]*$ ]]
    then
        echo "$1: valid"
    else
        echo "$1: invalid"
    fi
}
Run Code Online (Sandbox Code Playgroud)

  • 用下划线开始一个varname也是合法的,所以`^ [_ [:alpha:]] [_ [:alnum:]]*$`如果你想不区分大小写,你可以`shopt -s nocasematch` (6认同)
  • `^ [az] [a-zA-Z0-9 _]*$`将标记以大写字符开头的变量无效.我可以建议`^ [a-zA-Z] [a-zA-Z0-9 _]*$`? (4认同)