在 busybox 中使用 shell 脚本仅验证字母

validate only alphabets using shell script in busybox

我想验证一个只能是字母的字符串 (Capital/Small)。我可以使用 Bash 或 Shell 在 Linux 中轻松完成,但无法在 Busybox (OpenWRT) 中验证。我的一段代码是 ...

#!/bin/sh
. /usr/share/libubox/jshn.sh
Info=$(cat /root/Info.json)
json_load "$Info"
json_get_var value plmn_description
echo "$value"
if [[ "$value" == [a-zA-Z] ]] ;then
    echo "Valid"
else
    echo "Invalid information"
fi

...

您可以这样使用 case conditional construct

case "$value" in
  *[!a-zA-Z]*) echo invalid information ;;
            *) echo valid
esac

使用 Busybox awk:

$ busybox awk '{              # using busybox awk
    for(i=1;i<NF;i++)         # iterate all json record fields (not the last, thou)
        if($i=="\"plmn_description\":" && $(i+1)~/^\"[a-zA-Z]+\",?$/) {
            ret="Valid"       # if "plmn_description": is followed by "alphabets"
            exit              # exit for performance 
        }
}
END {
    print (ret?ret:"Invalid") # output Valid or Invalid
}' Info.json                  # process the json file

输出:

Valid