shell 脚本中getopt 和 getopts 的区别

 
getop string1 string2..n
string1中标出的字符表示合法的标志(-后面可以跟的字符),如果标志字符后面有:,说明这个标志后面(可以有0-n个空格)的stringx是它的参数, 
getop 按string1 处理 string2....n,输出结果
-标志1 参数1 -标志2 参数2    ..... -- 参数n 


40:/tmp/v>getopt "a:b" "-bafile"
-b -a file --

由此可以看到,getopt也是getopts的规则来重新组合参数。
这个层面他们完全一样
请注意他们的区别在于提供getopts的shell内置了OPTARG这个变变,getopts修改了这个变量。
而getopt则不能。因此getopt必须使用set来重新设定位置参数$1,$2....
然后在getopt中用shift的方式依次来获取。

 

再者

args=`getopt abo: $*`
set -- $args


注意第二句话,如果某个参数中含有空格,那么这个参数就变成了多个参数。因此,基本上,如果参数中可能含有空格,那么必须用getopts。否则仅仅从使用上看,他们没有区别。
当然,重要的是
getopt是个外部binary文件,而getopts是built-in

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值