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文件)

    暫未應用到。。。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM