• 使用getopts处理输入参数


    在编写shell脚本中,需要输入参数,使用过程中,getopts更加方便。可以很好的处理用户输入的参数和参数值。

    参加如下一段脚本:

    #!/bin/bash
    while getopts ":a:p:c:e" opt
    do
        case $opt in
        a)
            echo "--- -a ---"
            echo $OPTARG;;
        p)
            echo "--- -p ---"
            echo $OPTARG;;
        c)
            echo "--- -c ---"
            echo $OPTARG;;
        e)
            echo "--- -e ---"
    echo $OPTARG;; ?) echo "-a -p -c -e" exit 1;; esac done
    OPTIND:getopts使用OPTIND作为索引,来处理下一个需要处理的参数,记录当前的状态。
    OPTARG:在上面的循环中,a,p,c三个参数后面各有一个冒号,冒号表示该输入的参数后面还有一个参数值,当getopts发现冒号后,会处理用户输入的参数值,这个参数值被保存在OPTARG中。
    OPTSTRING:也就是上例中的 :a:p:c:e,getopts需要处理的参数。注意,最前面的冒号“:”用于指定getopts工作于silent mode,在silent模式下,当用户输入的参数不满足OPTSTRING时,不会讲illegal option这样的错误信息打印出来,使代码看起来更加专业。如果想要工作在verbose模式下,可以去掉最前面的冒号。
    OPTSTRING后面没有冒号,则可以输入参数也可以不输入参数,但是如果输入参数,OPTARG也不会保存参数的值。
    如上脚本执行结果如下:
    linux-UMLhEm:/home/test/shell # ./option.sh -e
    --- -e ---
    
    linux-UMLhEm:/home/test/shell # ./option.sh -e abc
    --- -e ---
    
    linux-UMLhEm:/home/test/shell # ./option.sh -a test -p ok
    --- -a ---
    test
    --- -p ---
    ok
    linux-UMLhEm:/home/test/shell # ./option.sh -a test -p
    --- -a ---
    test
    -a -p -c -e
    linux-UMLhEm:/home/test/shell # ./option.sh -a
    -a -p -c -e
    linux-UMLhEm:/home/test/shell #
     
    如果在OPTSTRING中在字母前不加“:”改为
    while getopts "a:p:c:e" opt  
     
    则,执行结果为:

    linux-UMLhEm:/home/test/shell # ./option.sh -a
    ./option.sh: option requires an argument -- a
    -a -p -c -e
    linux-UMLhEm:/home/test/shell # ./option.sh -a test -p ok
    --- -a ---
    test
    --- -p ---
    ok
    linux-UMLhEm:/home/test/shell # ./option.sh -a test -p
    --- -a ---
    test
    ./option.sh: option requires an argument -- p
    -a -p -c -e

  • 相关阅读:
    redis之不重启,切换RDB备份到AOF备份
    redis之持久化RDB与AOF
    redis之哨兵集群
    redis之订阅功能
    redis之基础命令
    Liunx之MySQL安装与主从复制
    Python邮件发送脚本(Linux,Windows)通用
    redhat6.4 gcc g++ rpm方式安装步骤
    LVS+Keepalived+Mysql+主主数据库架构[2台]
    监控mysql状态脚本
  • 原文地址:https://www.cnblogs.com/xingmuxin/p/8435542.html
Copyright © 2020-2023  润新知