我正在尝试将以下内容作为我的脚本的有效调用:
sh name.sh -l -a
sh name.sh -l
这是我到目前为止使用getopts的代码,其中-a是必需参数:
default="no"
echo "Initial parameters.
while getopts ":l:a:" o; do
case "${o}" in
l)
...;;
a)
a+=(${OPTARG})
IFS=',' read -a myarray <<< "$a"
default="yes"
;;
:)
echo "Missing option argument for -$OPTARG" >&2; exit 1;;
*)
usage;;
esac
done
shift $((OPTIND-1))
if [ -z "${l}" ] || [ -z "${a}" ] ; then
usage
fi
我只需要知道如何在getopts中设置可选标志-a和它的参数。 感谢:)
答案 0 :(得分:0)
据我所知,getopts
不支持可选的选项参数。您可以通过自己处理option-argument来解决此问题:
#!/bin/bash
while getopts "x" o; do
case "${o}" in
x)
OPTARG=${!OPTIND}
if [ "${OPTARG:0:1}" == "-" ] || [ "$#" -lt "$OPTIND" ]; then
OPTARG="DEFAULT"
else
OPTIND=$(( $OPTIND + 1 ))
fi
echo $OPTARG
;;
esac
done