佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > shell腳本使用兩個橫杠接收外部參數(shù)的方法

shell腳本使用兩個橫杠接收外部參數(shù)的方法

熱門標簽:鐵路電話系統(tǒng) 百度競價排名 呼叫中心市場需求 地方門戶網(wǎng)站 服務外包 Linux服務器 AI電銷 網(wǎng)站排名優(yōu)化

首先,效果是這樣的:

既可以處理短選項(-)又可以處理長選項(--)

[developer@hadoop-cluster-manager shell]$ ./demo.sh --help
sqoop程序開始運行: demo.sh
Usage: ./demo.sh [options]
 
Options:
 --append, -a:   追加導入(默認為追加模式)
 --overwrite, -o: 覆蓋導入 
 
 --method, -m:   single-單日導入
          interval-區(qū)間導入
          all-全表導入
 
 --date, -d:    單日導入,某一日期數(shù)據(jù)(格式為yyyymmdd)
 
 --startdate, -s: 區(qū)間導入,開始日期
 --enddate, -e:  區(qū)間導入,結(jié)束日期
 
 --help, -h     幫助

shell腳本接外部參數(shù)有一種很簡單的辦法,在腳本中使用$0,$1,$2...指代執(zhí)行腳本時傳入的第幾個參數(shù)($0是腳本名)。

但是,這樣做畢竟不夠優(yōu)雅,

另一種方法shell腳本內(nèi)使用getopts命令,只可以接短選項(eg:-d,-s,-h),很方便,比較簡單,可以自己去搜一搜。

但如果想要達成上面這種效果同時支持長選項和短選項(eg:--date,-d,--startdate,-s,--help,-h),

就只能使用getopt命令了:

# 定義命令執(zhí)行選項
if ! ARGS=$(getopt -o aom:d:s:e:h --long append,overwrite,method:,date:,startdate:,enddate:,help -n "$0" -- "$@"); then
  echo "Terminating..."
  echo -e "Usage: ./$SCRIPT_NAME [options]\n"
  echo -e "Options:\n --append, -a:   追加導入(默認為追加模式)\n --overwrite, -o: 覆蓋導入 \n\n --method, -m:   single-單日導入\n          interval-區(qū)間導入\n          all-全表導入\n\n --date, -d:    單日導入,某一日期數(shù)據(jù)(格式為yyyymmdd)\n\n --startdate, -s: 區(qū)間導入,開始日期\n --enddate, -e:  區(qū)間導入,結(jié)束日期\n\n --help, -h     幫助"
  exit 1
fi
 
# 將規(guī)范化后的命令行參數(shù)分配至位置參數(shù)($1,$2,...)
# The -- ensures that whatever options passed in as part of the script won't get interpreted as options for set, but as options for the command denoted by the $progname variable.
eval set -- "${ARGS}"
 
# 接受執(zhí)行選項;賦值給變量
while true; do
 case "$1" in
  -a|--append)
   mode='append'
   shift
   ;;
  -o|--overwrite)
   mode='overwrite'
   shift
   ;;
  -m|--method)
   method=$2
   shift 2
   ;;
  -d|--date)
   date=$2
   shift 2
   ;;
  -s|--startdate)
   startdate=$2
   shift 2
   ;;
  -e|--enddate)
   enddate=$2
   shift 2
   ;;
  --)
   shift
   break
   ;;
  -h|--help)
   echo -e "Usage: ./$SCRIPT_NAME [options]\n"
   echo -e "Options:\n --append, -a:   追加導入(默認為追加模式)\n --overwrite, -o: 覆蓋導入 \n\n --method, -m:   single-單日導入\n          interval-區(qū)間導入\n          all-全表導入\n\n --date, -d:    單日導入,某一日期數(shù)據(jù)(格式為yyyymmdd)\n\n --startdate, -s: 區(qū)間導入,開始日期\n --enddate, -e:  區(qū)間導入,結(jié)束日期\n\n --help, -h     幫助"
   exit 0
   ;;
  ?)
   echo "missing options, pls check!"
   exit 1
   ;;
 esac
done

到此這篇關(guān)于shell腳本使用兩個橫杠接收外部參數(shù)的文章就介紹到這了,更多相關(guān)shell腳本接收參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 監(jiān)控MySQL主從狀態(tài)的shell腳本
  • 使用Shell腳本如何啟動/停止Java的jar程序
  • Shell中使用grep、sed正則提取和替換字符串
  • Shell eval通過變量獲取環(huán)境變量的方法實現(xiàn)
  • shell腳本實戰(zhàn)-while循環(huán)語句
  • shell腳本--sed的用法詳解
  • linux shell中 if else以及大于、小于、等于邏輯表達式介紹
  • Linux中執(zhí)行shell腳本的4種方法總結(jié)
  • 一個不錯的shell 腳本教程 入門級
  • Shell字符串比較相等、不相等方法小結(jié)
  • python中執(zhí)行shell命令的幾個方法小結(jié)
  • 分享一個可以通過命令簡寫執(zhí)行對應命令的Shell腳本

標簽:黃山 銅川 崇左 湖南 湘潭 蘭州 仙桃 衡水

巨人網(wǎng)絡通訊聲明:本文標題《shell腳本使用兩個橫杠接收外部參數(shù)的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    米林县| 崇信县| 陇南市| 葵青区| 张家口市| 榆林市| 玛曲县| 高要市| 拜泉县| 南投县| 卫辉市| 高雄县| 石台县| 施甸县| 西乌珠穆沁旗| 乌鲁木齐市| 修武县| 呈贡县| 富蕴县| 呼和浩特市| 钦州市| 淅川县| 九龙县| 阳江市| 正阳县| 东安县| 龙口市| 临江市| 罗城| 沐川县| 富顺县| 紫金县| 合肥市| 游戏| 镇远县| 文水县| 晋州市| 仙游县| 綦江县| 张家港市| 麻江县|