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
    
  • 相关阅读:
    【折腾】Docker官网下载Docker实在太慢怎么破!!!!!windows 安装docker
    centos7搭建FTP文件服务器--虚拟用户
    AWK简单案例
    SaltStack系统初始化
    ReactNative环境搭配及软件安装
    extundelete工具恢复误删文件
    linux磁盘阵列raid1的搭建教程
    linux中Raid0磁盘阵列的搭建
    子网掩码的计算方法
    linux网络管理命令
  • 原文地址:https://www.cnblogs.com/Answer1215/p/14398914.html
Copyright © 2011-2022 走看看