需要使用带有一个参数或另一个参数的getopts

时间:2014-03-18 19:52:56

标签: linux bash parameters getopts

while getopts gpr: | gpd: name
do
   case $name in
      g) echo " -g";;
      p) echo " -p";;
      r) echo " -r with '$OPTARG'";;
      d) echo " -d with '$OPTARG'";;
   esac
done

我知道这写错了。我想这样写,所以它会显示我需要它做什么。

带g,p,d或r选项的脚本。关键是OR。

我试过谷歌,阅读手册,发现了很多简单的例子。 问题是,如果有办法做到这一点或getopts不支持这种行为。

1 个答案:

答案 0 :(得分:0)

以下内容将在解析-g-p-r-d中的第一个后停止处理选项。如果需要,您可以在if语句中执行更强大的操作(发出警告,退出脚本等)。

while getopts gpr:d: name
do
   if (( option_found == 1 )); then
       break
   fi
   case $name in
      g) echo " -g"; option_found=1;;
      p) echo " -p"; option_found=1;;
      r) echo " -r with '$OPTARG'"; option_found=1;;
      d) echo " -d with '$OPTARG'"; option_found=1;;
   esac
done

就其本身而言,getopts并未对所使用的选项强制执行任何形式的互斥。