• [Bash] Create a Bash Script that Accepts Named Options with getopts


    Getopts

    Let’s say you want to allow a user to pass a -v flag to turn on verbose logging in a script. Manually parsing out options passed to a script is difficult, but in this lesson, we’ll learn about getopts which makes it easy. We'll look at the limitations of using getopts (options must be in a format like -a or -ab ) as well as the importance of shifting processed options off of the argument array.

    ## ':a': if the opt is a
    ## 'b:' if the opt is b and it has value as well
    ## '$OPTARG': is the value that passed in
    ## '?': catch unknown opt
    while getopts ':ab:' opt; do
        case "$opt" in
            a) echo "a found";;
            b) echo "b found and the value is $OPTARG";;
            ?) echo "unknow option";;
        esac
    done
    

    If we run it with:

    ./getopts.sh -a -b 123
    ## a found
    ## b found and the value is 123
    

    If we run with some extra options we didn't handle:

    bash % ./getopts.sh -a -b 123 -d -e -f 321
    ## a found
    ## b found and the value is 123
    ## unknow option
    ## unknow option
    ## unknow option
    

    Shift

    Remove the args we have processed.

    ## ':a': if the opt is a
    ## 'b:' if the opt is b and it has value as well
    ## '$OPTARG': is the value that passed in
    ## '?': catch unknown opt
    while getopts ':ab:' opt; do
        case "$opt" in
            a) echo "a found";;
            b) echo "b found and the value is $OPTARG";;
            ?) echo "unknow option";;
        esac
    done
    
    shift $(( OPTIND -1 ))
    
    for arg in $@; do
        echo "received arg $arg"
    done 
    

    If run it with:

    ./getopts.sh -a -b 123 abc def tsf 
    
    ## a found
    ## b found and the value is 123
    ## received arg abc
    ## received arg def
    ## received arg tsf
    
  • 相关阅读:
    qt creator中输入中文中文变繁体
    Trie
    pycharm 专业版的 django功能
    fzu 1533
    django使用问题记录
    查看SQLServer最耗资源时间的SQL语句
    从mysql数据库删除重复记录只保留其中一条(保留id最小的一条)
    使用CSS3的appearance属性改变元素的外观
    mysql中将多行数据合并成一行数据
    MySQL字符串的拼接、截取、替换、查找位置
  • 原文地址:https://www.cnblogs.com/Answer1215/p/14398914.html
Copyright © 2020-2023  润新知