Shell解析传入参数

shell中的特殊参数:

$#: 传递到脚本的参数个数
$*: 以一个单字符串显示所有向脚本传递的参数
$$: 脚本运行的当前进程ID
$@: 与$#相同,但在使用时加引号,并在引号中返回每个参数
$-: 显示shell使用的当前选项,与set命令功能相同
$?: 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$0: 脚本名字,$1位置参数1,$2位置参数2... ${10}位置参数10
$_: 之前命令的最后一个参数

手动处理命令行参数复杂而容易出问题,我们可以直接利用getopts和getopt来处理shell的外部传入的参数。

getopts

getopts不支持长选项,它的使用模板如下:

#/bin/bash

while getopts ":o:f:a" opt
do
    case $opt in
        o)
        echo "option $OPTARG"
        ;;
        f)
        echo "filename $OPTARG"
        ;;
        a)
        echo "a"
        ;;
        ?)
        echo "Unknow input"
        exit 1
        ;;
    esac
done

 

getopts使用形式:getopts option_string var

后边带:的,表示必须带有参数,

o:f:a,表示o和f后必须带有实际值,而a不需要。

传递变量时,

OPTARG保存选项的参数。

OPTIND存储的是下一个参数的index。

 

在optin_string最前面加:时,如果a是带参数但实际没有传入,会自动报错,如果不加:,运行时不带参数传入会被忽略。

getopts在检测到非法参数就会停止。

 

getopt

如果需要支持长选项以及可选参数,就需要使用getopt。

比较复杂,但功能更强大。

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值