Необязательный аргумент опции с getopts

while getopts "hd:R:" arg; do
  case $arg in
    h)
      echo "usgae" 
      ;;
    d)
      dir=$OPTARG
      ;;
    R)
      if [[ $OPTARG =~ ^[0-9]+$ ]];then
        level=$OPTARG
      else
        level=1
      fi
      ;;
    \?)
      echo "WRONG" >&2
      ;;
  esac
done
  • level относится к параметру -R, dir относится к параметрам-d

  • когда я ввожу ./count.sh -R 1 -d test/, он работает правильно

  • когда я ввожу ./count.sh -d test/ -R 1, он работает правильно

  • но я хочу, чтобы это работало, когда я ввожу ./count.sh -d test/ -Rили./count.sh -R -d test/

Это означает, что я хочу, чтобы -Rимел значение по умолчанию, а последовательность команд могла быть более гибкой.

34
задан Eduardo Cuomo 22 June 2018 в 21:59
поделиться