我想用getopts解析一个参数,这需要设置另外两个解析参数。
这样的事情,如果-l设置为yes:
sh name.sh -l yes -a "bla" -b "blubb"
然后需要将参数-a和-b设置为。否则可以省略这些论点。
sh name.sh -l no
我的getopts案例如下:
while getopts ":l:a:b:" o; do
case "${o}" in
l)
l=${OPTARG}
(( $l == "Y" || $l == "y" )) || usage;;
a)
a=${OPTARG}
(( $a == "bla" || $a == "blubb" )) || usage;;
b)
b=${OPTARG};;
:)
echo "Missing option argument for -$OPTARG" >&2; exit 1;;
*)
usage;;
esac
done
shift $((OPTIND-1))
if [ -z "${l}" ] || [ -z "${a}" ] || [ -z "${b}" ] ;
then
usage
fi
但是就像现在一样,-a和-b是必需的输入,我不知道如何将它们遗漏在-l被设置为no的情况下,所以它们不必是进入。就像我打电话给他们看上面提到的那样。 感谢:)