shell脚本中 处理用户输入中选项的处理

2022.8.26 星期五

不知不觉,后知后觉又快星期一了,虽然没轮到自己但是每周的工作小结需要给老板过目,确实没做什么,时间过得很快,快到下地都可数了,自己也慢慢对毕业论文开始揪心了,确实研一从来没有这种感觉,都是说什么做什么,没有明确的目标,确实有点傻头傻脑的,不管做啥目标要明确,做啥能得到啥,自己心里要清楚,那样也更容易坚持下去,今天早上起早去搭架子,为了拯救我那岌岌可危的稻子,早上也是惨状连连,基本上都倒了整整齐齐。和老师交涉下来也是得加大投入,唉,放弃不舍,丢之可惜。

今日代码

处理选项:选项是跟在单破折线后面的单个字母,他能改变命令行为。

  1. 查找选项 shift 与 case
  2. 分离参数与选项 双破折线
  3. 处理带值的选项需要while case shift break 结合。

第三条如下:

$ cat test.sh
#!/bin/bash/
# extracting command line options and values
echo
while [ -n "$1"]
do
     case   "$1"  in
          -a) echo "Found the -a option" ;;
          -b) param="$2"
          echo "Found the -b option, with parameter value $param"
          shift ;;
          -c) echo "Found the -c option";;
          --)  shift
               break ;;
          *)  echo "$1 is not an option";;
     esac
     shift
done
#
count=1
for param in "$@"
do
     echo "Parameter #$count :$param"
     count=$[ $count + 1 ]
done
$
$./test.sh -a -b test1 -d

Found the -a option
Found the -b option, with parameter value test1
-d is not an option
$

上面代码中,case语句定义了三个它要处理的选项。-b 选项还需要一个额外的参数值。由于要处理的参数是$1,额外的参数值就应该位于$2(所有的参数值在处理完后都需要被移除)。只要将参数值从$2变量中提取出来就ok了。当然,因为这个选项占用了两个参数位,所以需要shift命令多移动一个位置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

μμ豆奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值