zoukankan      html  css  js  c++  java
  • [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
    
  • 相关阅读:
    ImagView
    Menu(二)在代码中add
    Menu菜单键(一)
    不区分大小写
    ASP.NET中的一些小技巧
    常用的CSS标签标记属性翻译注释
    页面自动刷新和自动跳转代码
    ASP.NET中利用存储过程实现模糊查询
    打开页面时光标自动在输入框
    一些页面自动跳转的实现
  • 原文地址:https://www.cnblogs.com/Answer1215/p/14398914.html
Copyright © 2011-2022 走看看