在 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
我想验证一个只能是字母的字符串 (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