linux - 需要将 getopts 与一个参数或另一个参数一起使用

标签 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 不支持这种行为。

最佳答案

我会这样做:

have_r=false
have_d=false

while getopts gpr:d: name; do
   case $name in
      g) echo " -g";;
      p) echo " -p";;
      r) echo " -r with '$OPTARG'"; have_r=true;;
      d) echo " -d with '$OPTARG'"; have_d=true;;
   esac
done
shift $((OPTIND - 1))

if $have_r && $have_d; then
   echo "error, cannot use both -r and -d" >&2
   exit 1
fi

关于linux - 需要将 getopts 与一个参数或另一个参数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22489628/

相关文章:

ruby - 捕获从 Ruby 内部运行的交互式外部命令的输出

python - twiddle 优化器的域?

linux - 如何使用 termianl 在 linux 中更改具有相同文件名(例如 : data. txt)的所有子目录中的字符串?

linux - Bash 脚本,组合系统中所有用户的目录大小

linux - shell重定向位置之间的区别

linux - 我在 linux 命令行中使用 wc 或 grep 是否有问题?我的字符计数+1

python - Arduino Yun Python 脚本

bash - 使用 `alias' 添加默认选项 - 例如 `alias cd="cd -P"'

parameters - Informatica Workflow 无法读取参数文件

python-2.7 - Selenium Webdriver 与 Python - driver.title 参数