【发布时间】:2017-11-16 17:08:13
【问题描述】:
我无法验证我的脚本参数。我正在尝试为我的脚本实现 5 个强制参数和 2 个可选参数。这是我到目前为止所尝试的。
#!/bin/sh
if [ $# -lt 5 ] || [ $# -gt 7 ]
then
echo "Please supply 5 or 6 or 7 parameters. Aborting."
exit 1
fi
echo MP1 = "$1"
echo MP2 = "$2"
echo MP3 = "$3"
echo MP4 = "$4"
echo MP5 = "$5"
while getopts c:a: optionalargs
do
case $optionalargs in
c)copt=$OPTARG;;
a)aopt=$OPTARG;;
*)echo "Invalid arg";;
esac
done
if [ ! -z "$copt" ]
then
export CHAR_SET=$copt
fi
if [ ! -z "$aopt" ]
then
export ADDITIONAL_FLAGS=$aopt
fi
shift $((OPTIND -1))
echo OP_C = "${CHAR_SET}"
echo OP_A = "${ADDITIONAL_FLAGS}"
问题在于验证此脚本的参数总数,因为我总共可以有 5 或 7 个参数。提供 -a additional -c character 被视为 9 个参数。
./a.sh 1 2 3 4 5 -a additional -c character
Please supply 5 or 6 or 7 parameters. Aborting.
我对没有- 的设计持开放态度,只要我能够同时拥有强制参数和可选参数。
如何正确验证此内容?
【问题讨论】:
-
-a 和 -c 选项(及其参数)可以出现在参数列表中的任何位置,还是必须出现在 5 个必需的非选项参数之后?
-
让我在这里贪吃。假设它可以在任何地方。你有什么建议?