我试图使用像这样的getopts:
getopts "i:"
但是只有当我使用mediawiki
时才打印$ INT。如果我理解正确,optstring中的冒号意味着相应的标志需要值。但是我想让这个标志成为可选的。
任何人都可以解释为什么脚本的行为如此,我该如何解决呢?
答案 0 :(得分:1)
你不能这样做(bash getopts
)。 “getopts
”不支持强制或可选选项。
你需要为此编码。
如果指定了“:”,则需要有该选项的参数。没有办法解决它。
以下代码段显示了如何检查必需参数。
# Mandatory options
arg1=false;
..
...
case "${option}"
in
i) INT=${OPTARG}; arg1=true;
;;
esac
if ! $arg1;
then
echo -e "Mandatory arguments missing";
# assuming usage is defined
echo -e ${usage};
exit 1;
fi