• 【Linux】shell脚本参数传递


      这里介绍参数传递的两种方式。

    方式一:$0,$1,$2...

    采用$0,$1,$2..等方式获取脚本命令行传入的参数

    $0:脚本名称

    $1....: 参数

    例子:

    #编写一个shell
    $ vim test.sh
    
        echo "参数0参数为:"$0
        echo "参数1参数为:"$1
        echo "参数2参数为:"$2
    
    #执行shell传递两个参数
    $ bash test.sh 我是参数1 我是参数2
    
        参数0参数为:test.sh
        参数1参数为:我是参数1
        参数2参数为:我是参数2

    方式二:getopts 

    getopts引用的三个环境变量:

      OPTARG: 上一个由getopts内置命令处理的选项参数的值, option argument(存放选项参数),当选项需要选项参数时,getopts 命令就将其置于变量 OPTARG 中

      OPTIND:  下一个由getopts内置命令处理的参数的序号,option index,每次调用脚本它都会被初始值为1,会逐次递增。

      OPTERR: 如果设为1,bash会显示getopts的错误。设为0,不显示getopts的错误。

    语法格式:getopts [option[:]] [DESCPRITION] VARIABLE
    option:表示为某个脚本可以使用的选项
    ":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)
    VARIABLE:表示将某个选项保存在变量VARIABLE中

    A、前面没有冒号:

    会按照系统的定义报错

    a. 指定了非法选项,即不存在的选项,会报错:scriptname: illegal option — p

    b. 选项需要参数但没有指定,会报错:scriptname: : option requires an argument –

    c. 不论是指定了错误的选项或者指定了带选项的参数没有指定参数,variable都设置为”?”,对应的OPTARG为出错的选项

    B、选项前面有冒号,可以屏蔽这些错误信息,使用自己的反馈信息

    a. 当指定的参数不存在时,variable设置为”:”,对应的$OPTARG为”对应的选项”

    b. 指定的选项是带参数的而没有提供参数,variable设置为”?”,对应的$OPTARG为”这时候的选项”

    while getopts ":a:b:c:" opt
    do
        case $opt in
            a)
            echo "参数a的值$OPTARG"
            ;;
            b)
            echo "参数b的值$OPTARG"
            ;;
            c)
            echo "参数c的值$OPTARG"
            ;;
            ?)
            echo "未知参数"
            exit 1;;
        esac
    done

    用一个while循环加case分支获取不同参数,:a:b:c相当于定义参数的变量名,有时候可能会有未知参数,所以增加一个?的分支。

    在shell中执行脚本,结果如下

    $ bash test.sh -a 1 -c 3 -d 4
     
    #在shell中的输出
    参数a的值1
    参数c的值3
    未知参数
  • 相关阅读:
    2040 打开所有的灯
    1323 删数问题(加强版)
    1087 FBI树
    1030 求先序排列
    1743 矩阵Ⅲ
    svn更新时,出现不知道这样的主机的解决方案
    用jquery或js获取select标签中选中的option值及文本
    html页面中的button按钮会自动提交form表单的问题以及解决方案
    localStorage与sessionStorage的使用和区别
    命令行mvn打包
  • 原文地址:https://www.cnblogs.com/jxd283465/p/11611146.html
Copyright © 2020-2023  润新知