加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 带getopts的可选选项参数

发布时间:2020-12-15 19:30:44 所属栏目:安全 来源:网络整理
导读: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 ;; esacdone level是指参数-R,dir是指-d参数 当我输入./count.sh -R 1 -d
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具有默认值,并且命令的顺序可以更灵活。

getopts并不真正支持这一点;但是写出你自己的替代品并不困难。
while true; do
    case $1 in
      -R) level=1
            shift
            case $1 in
              *[!0-9]* | "") ;;
              *) level=$1; shift ;;
            esac ;;
        # ... Other options ...
        -*) echo "$0: Unrecognized option $1" >&2
            exit 2;;
        *) break ;;
    esac
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读