Shell参数选项解析

两种shell选项参数解析工具

getopts/getopt

原理

  • test.sh
#!/bin/bash

while [[ $# -ge 1 ]]; do
    case $1 in
        -a|--aa )
            A=$2
            echo "经过a"
            shift 2
            ;;
        -b|--bb )
            B=$2
            echo "经过b"
            shift 2
            ;;
        -c|--cc )
            C="true"
            echo "经过c"
            shift
            ;;
        * )
            echo "经过*:$1"
            shift   
            ;;
    esac
done
echo "A = $A"
echo "B = $B"
echo "C = $C"
  • 执行:sh test.sh --bb bbb -c -d -a aaa
经过b
经过c
经过*:-d
经过a
A = aaa
B = bbb
C = true
  • $# -ge 1:参数个数大于等于1

  • case esac语句
    • ;;:与其他语言中的break,但是此时不能省略贯穿后面,语法报错
    • *)*表示通配符,相当于其他语言的default未匹配项
  • shfit:位置参数左移命令
    • 例子:shift 3表示原来的$4现在变成$1,原来的$5现在变成$2,原来的$1$2$3丢弃,$0不移动,$#参数个数会减3。

转载于:https://www.cnblogs.com/leocll/p/11078260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值