# 命令行調用 start.sh 8080 9090 # 腳本中獲取 port1=$1 # 8080 port2=$2 # 9090
能夠看出來這種方式使用起來很簡單,但靈活性太差,好比我只想傳第二個參數,第一個使用默認值,這個就不行,因此就有第二種,指定參數傳遞web
#命令行調用 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值shell
上面這種方式能夠知足咱們大多數的應用場景了,可是因爲參數名的限制,若是參數太多,這種命令就不太直觀,因此引伸出第三種,長參數選項。命令行
長參數選項 getopt (外部binary文件)debug
暫未應用到。。。code