zoukankan      html  css  js  c++  java
  • Shell传参的多种方式

    Shell 传参的多种方式

    1. 使用$1 $2 这种类似占位符的方式
    # 命令行调用
    start.sh 8080 9090
    # 脚本中获取
    port1=$1 # 8080
    port2=$2 # 9090
    

    可以看出来这种方式使用起来很简单,但灵活性太差,比如我只想传第二个参数,第一个使用默认值,这个就不行,所以就有第二种,指定参数传递

    1. 指定参数 getopts(shell内置命令)
    #命令行调用
    start.sh -a 8080 -b 9090 	
    # 脚本中获取
    while getopts "d:b:h" arg #选项后面的冒号表示该选项需要参数
    do
            case $arg in
                 d)
                    DEBUG=$OPTARG
                    echo "debug: $OPTARG" #参数存在$OPTARG中
                    ;;
                 b)
                    DEBUG_PORT=$OPTARG
                    echo "DEBUG_PORT: $OPTARG"
                    ;;
                 h)
                    echo "-d: debug enable,  true or false, default is false"
                    echo "-b: debug port, default is 8000"
                    echo "-p: web port ,default is 8080"
                    exit 1
                    ;;
                 ?)  #当有不认识的选项的时候arg为?
                echo "unkonw argument"
            exit 1
            ;;
            esac
    done
    

    注意:这种参数名只能是一个字母(其它符号没验证过),参数名后面紧接着的内容会被当做value值

    上面这种方式可以满足我们大多数的应用场景了,但是由于参数名的限制,如果参数太多,这种命令就不太直观,所以引申出第三种,长参数选项。

    1. 长参数选项 getopt (外部binary文件)

      暂未应用到。。。

    
    
  • 相关阅读:
    AT2364 Colorful Balls
    SP5973 SELTEAM
    codeforces469B
    校内题目T2691 桶哥的问题——送桶
    关于一种6的倍数判定素数的方法
    P1903 奖学金题解
    说说关于洛谷P4779迪杰斯特拉的堆优化
    清北学堂北京大学文宏宇神仙讲课day7
    CF961F k-substrings
    CF985F Isomorphic Strings
  • 原文地址:https://www.cnblogs.com/yissheng/p/9784547.html
Copyright © 2011-2022 走看看