shell 腳本參數處理

shell 腳本參數處理

默認參數變量

$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示全部向腳本傳遞的參數 如 "1 2 3"
$@ 分別取出參數 如 "1" "2" "3"
$?上一個命令的退出狀態
$-
$_
$!
$[0-9] 用戶第n個參數參數shell

經常使用處理方式

  • 手動處理 只能經過 內建參數來獲取處理bash

  • getopts 內建工具,不能處理長參數工具

  • getopt 支持長短參數url

getopt

系統內建的工具,只能處理短參數spa

getopt 用法

-o或--options選項後面接可接受的短選項,如ab:c::,表示可接受的短選項爲-a -b -c,其中-a選項不接參數,-b選項後必須接參數,-c選項的參數爲可選的
-l或--long選項後面接可接受的長選項,用逗號分開,冒號的意義同短選項。
-n選項後接選項解析錯誤時提示的腳本名字code

示例

ARGS=`getopt -o g:p:n:i:v:u:s: -l namespace:,project:,name:,pipeline:,version:,url:,sys: -- "$@"`
# 若是ARGS 語句失敗 直接退出 返回 錯誤
if [ $? != 0 ]; then
        echo "Fail to get args."
        exit 1
fi
# 轉換參數格式 --long=a => --long a
eval set -- ${ARGS}

while true
do
    case "$1" in
        -g|--namespace)
            NAMESPACE=$2  # 取值賦值
            shift 2       # 向後偏移2位 刪除第一個參數和參數值
            ;;
        -p|--project)
            PROJECT=$2
            shift 2
            ;;
        -n|--name)
            NAME=$2
            shift 2
            ;;
        -i|--pipeline)
            PIPELINE=$2
            shift 2
            ;;
        -v|--version)
            VERSION=$2
            shift 2
            ;;
        -u|--url)
            URL=$2
            shift 2
            ;;
        -s|--sys)
            SYSNAME=$2
            shift 2
            ;;
        --)
            shift
            break
            ;;
     esac
done
相關文章
相關標籤/搜索