我想为我的脚本设置 getopts,使其不接受参数 ( -p
),但它也可以接受参数 ( -p library
)。两者都需要被接受。它们(参数和无参数)都是允许的。应该允许参数是任何字符串。见下文:
while getopts "p:sdih" opt; do
case ${opt} in
p )
#WHEN NO ARGUMENT IS GIVEN, DO THIS
selection="plex"
#WHEN AN ARGUMENT IS GIVEN, DO THIS
selection="plex"
argument=true
optarg="$OPTARG"
;;
s )
selection="sonarr"
;;
d )
selection="deluge"
;;
i )
selection="info"
;;
h )
usage | column -t -s "|"
exit
;;
\? )
echo "Invalid option"
usage | column -t -s "|"
exit
;;
esac
done 2>/dev/null
shift $((OPTIND -1))
这就是它需要工作的方式。但我是 getopts 的新手,所以我还不知道该怎么做......
要检查缺少的参数,请通过将optstring
:
更改"p:sdih"
为以冒号开头":p:sdih"
然后,在之前添加一个 case 参数,
\?)
如下所示:您可以通过评估来检查多个选项
"$OPTARG"
更多信息可以在这里找到