我正在尝试根据以下要求为两个不同的脚本编写验证,
members.sh -name [name] -age [age] -sex [m/f] -add [address] -city [city] -country [country] -pincode [pincode] - mobile [mobile no] -email [email id]
我想传递上述参数,mobile
和email
是可选的剩余必填选项,age
,pincode
应该只是数字,如果我们提供移动设备不,那也应该是整数。
我如何验证以上内容?感谢您的帮助
示例:
listhistory.sh -all -name [name] -mobile [mobile no] .... -opt9 [data9]
应使用-all
或-name [name]
或-mobile [mobile no]
或9个参数内的任何其他参数调用上述脚本。
答案 0 :(得分:0)
您可能需要稍微修改一下您的要求并使用以下脚本:
members.sh --name [name] --age [age] --sex [m / f] - add [address] --city [city] - mobile [mobile no] --email [email] ID]
如果你没问题,你可以考虑写一下:
#!/bin/sh
while getopts ":-:" arg
do
case "${arg}" in
-)
case "${OPTARG}" in
sex)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
sex=${val};
;;
age)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
age=${val};
;;
name)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
name=${val};
;;
add)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
add=${val};
;;
city)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
city=${val};
;;
mobile)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
mobile=${val};
;;
email)
val="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 ))
echo "Parsing option: '--${OPTARG}', value: '${val}'" >&2;
email=${val};
;;
esac;;
esac
done
err=0;
if [ -z "${sex+xxx}" ]; then echo sex is not set at all; err=1;fi
if [ -z "${name+xxx}" ]; then echo name is not set at all;err=1; fi
if [ -z "${age+xxx}" ]; then echo age is not set at all; err=1; fi
if [ -z "${city+xxx}" ]; then echo city is not set at all; err=1; fi
if [ -z "${add+xxx}" ]; then echo add is not set at all; err=1; fi
if [[ $err -eq 1 ]]
then
echo "incorrect usage"
exit 1
else
echo "All mandatory fields are set"
fi
PS:我没有涵盖所有必填字段。根据我的解决方案制作5个参数[名称,年龄,性别,城市和添加]作为强制性..而电话和电子邮件是可选参数..
代码只需输入并将它们存储在变量中..请编写自己的代码以便进一步验证。
示例输出:
$ sh n.sh --name nishant --age 24 --sex M --add "New Delhi India" --city Noida
Parsing option: '--name', value: 'nishant'
Parsing option: '--age', value: '24'
Parsing option: '--sex', value: 'M'
Parsing option: '--add', value: 'New Delhi India'
Parsing option: '--city', value: 'Noida'
All mandatory fields are set