如何在bash脚本中使用getopts?

时间:2017-08-25 21:01:03

标签: bash getopts

我试图使用像这样的getopts:

getopts "i:"

但是只有当我使用mediawiki时才打印$ INT。如果我理解正确,optstring中的冒号意味着相应的标志需要值。但是我想让这个标志成为可选的。 任何人都可以解释为什么脚本的行为如此,我该如何解决呢?

1 个答案:

答案 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