shift和getopts命令

本文深入解析Bash脚本中shift命令的使用技巧,以及getopts命令行参数处理的高级应用,帮助读者掌握参数偏移与解析的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shift位置偏移命令,用于对参数的偏移(左移)

  • #!/bin/bash
  • #
  • if ! [ $# = 0 ];then
  • echo "未加shift命令偏移."
  • for i in `seq 1 $#`;do
  • echo "第一个参数为: $1 参数个数为: $#"
  • done
  • else
  • echo "没有参数."
  • fi
  • if ! [ $# = 0 ];then
  • echo "加shift命令偏移."
  • for j in `seq 1 $#`;do
  • echo "第一个参数为: $1 参数个数为: $#"
  • shift
  • done
  • else
  • echo "没有参数."
  • fi

执行结果

 

getopts是shell的内部命令,用来获取与分析命令行参数

  • #/bin/bash
  • #
  • echo $0
  • echo $*
  • while getopts ":a:bc" opt
  • do
  • case $opt in
  • a)
  • echo $OPTARG
  • echo $OPTIND;;
  • b)
  • echo "b $OPTIND";;
  • c)
  • echo "c $OPTIND";;
  • ?)
  • echo "error"
  • exit 1;;
  • esac
  • done
  • echo $OPTIND
  • echo $*
  • shift $(($OPTIND-1))
  • echo $(($OPTIND-1))
  • echo $*
  • echo $0

执行结果

1、$0在用sh 或者 ./执行脚本时,指的是脚本名

2、$1 (1....n)指的第一个参数到....第n个参数
3、OPTARG存储相应选项的参数, OPTIND指向的是下一个参数的index
4、shift 会改变参数的顺序,通过左移去掉某些参数
5、getopts检测到非法参数就会停止,比如上例中遇到song就会终止,并不会去检测-m了,只要前一个参数是合法的(包含在option_string中的),就会继续检测下一个参数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值