精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Bash Getopts :讓你的腳本支持命令行參數(shù)

運(yùn)維 系統(tǒng)運(yùn)維
以前我總想知道如何為我的Bash腳本創(chuàng)建命令行參數(shù)。經(jīng)過(guò)搜索,我發(fā)現(xiàn)了2個(gè)函數(shù)可以處理這個(gè)問(wèn)題,getopt 函數(shù)和 getopts 函數(shù)。我無(wú)意爭(zhēng)論哪一個(gè)函數(shù)更好的。getopts 是一個(gè)shell內(nèi)建命令,而且似乎比 getopt 更容易實(shí)現(xiàn)這個(gè)功能,所以在這篇文章里我準(zhǔn)備講講getopts。

以前我總想知道如何為我的Bash腳本創(chuàng)建命令行參數(shù)。經(jīng)過(guò)搜索,我發(fā)現(xiàn)了2個(gè)函數(shù)可以處理這個(gè)問(wèn)題,getopt 函數(shù)和 getopts 函數(shù)。我無(wú)意爭(zhēng)論哪一個(gè)函數(shù)更好的。getopts 是一個(gè)shell內(nèi)建命令,而且似乎比 getopt 更容易實(shí)現(xiàn)這個(gè)功能,所以在這篇文章里我準(zhǔn)備講講getopts。

[[114412]]

bash getopts

開(kāi)始的時(shí)候,我只試著處理傳遞給腳本的命令行參數(shù)。***,我添加了另外一些有用的功能函數(shù),使得這個(gè)腳本可以成為其他任何交互式腳本處理命令行的開(kāi)始模板。我還添加了一個(gè)純文本格式的幫助函數(shù),讓腳本更加容易閱讀。

與其來(lái)一長(zhǎng)段文字解釋 getopts 在bash中是如何工作的,我認(rèn)為不如直接來(lái)一個(gè)能工作的腳本更讓人覺(jué)得輕松一些。

  1. #!/bin/bash
  2.  
  3. ######################################################################
  4. #This is an example of using getopts in Bash. It also contains some
  5. #other bits of code I find useful.
  6. #Author: Linerd
  7. #Website: http://tuxtweaks.com/
  8. #Copyright 2014
  9. #License: Creative Commons Attribution-ShareAlike 4.0
  10. #http://creativecommons.org/licenses/by-sa/4.0/legalcode
  11. ######################################################################
  12.  
  13. #Set Script Name variable
  14. SCRIPT=`basename ${BASH_SOURCE[0]}`
  15.  
  16. #Initialize variables to default values.
  17. OPT_A=A
  18. OPT_B=B
  19. OPT_C=C
  20. OPT_D=D
  21.  
  22. #Set fonts for Help.[譯注: 這里tput用來(lái)更改終端文本屬性,比如加粗,高亮等]
  23. NORM=`tput sgr0`
  24. BOLD=`tput bold`
  25. REV=`tput smso`
  26.  
  27. #Help function
  28. function HELP {
  29. echo -e \\n"Help documentation for ${BOLD}${SCRIPT}.${NORM}"\\n
  30. echo -e "${REV}Basic usage:${NORM} ${BOLD}$SCRIPT file.ext${NORM}"\\n
  31. echo "Command line switches are optional. The following switches are recognized."
  32. echo "${REV}-a${NORM} --Sets the value for option ${BOLD}a${NORM}. Default is ${BOLD}A${NORM}."
  33. echo "${REV}-b${NORM} --Sets the value for option ${BOLD}b${NORM}. Default is ${BOLD}B${NORM}."
  34. echo "${REV}-c${NORM} --Sets the value for option ${BOLD}c${NORM}. Default is ${BOLD}C${NORM}."
  35. echo "${REV}-d${NORM} --Sets the value for option ${BOLD}d${NORM}. Default is ${BOLD}D${NORM}."
  36. echo -e "${REV}-h${NORM} --Displays this help message. No further functions are performed."\\n
  37. echo -e "Example: ${BOLD}$SCRIPT -a foo -b man -c chu -d bar file.ext${NORM}"\\n
  38. exit 1
  39. }
  40.  
  41. #Check the number of arguments. If none are passed, print help and exit.
  42. NUMARGS=$#
  43. echo -e \\n"Number of arguments: $NUMARGS"
  44. if [ $NUMARGS -eq 0 ]; then
  45. HELP
  46. fi
  47.  
  48. ### Start getopts code ###
  49.  
  50. #Parse command line flags
  51. #如果選項(xiàng)需要后跟參數(shù),在選項(xiàng)后面加":"
  52. #注意"-h"選項(xiàng)后面沒(méi)有":",因?yàn)樗恍枰獏?shù)。選項(xiàng)字符串最開(kāi)始的":"是用來(lái)去掉來(lái)自getopts本身的報(bào)錯(cuò)的,同時(shí)獲取不能識(shí)別的選項(xiàng)。(譯注:如果選項(xiàng)字符串不以":"開(kāi)頭,發(fā)生錯(cuò)誤(非法的選項(xiàng)或者缺少參數(shù))時(shí),getopts會(huì)向錯(cuò)誤輸出打印錯(cuò)誤信息;如果以":"開(kāi)頭,則不會(huì)打印[在man中叫slient error reporting],同時(shí)將出錯(cuò)的選項(xiàng)賦給OPTARG變量)
  53.  
  54. while getopts :a:b:c:d:h FLAG; do
  55. case $FLAG in
  56. a) #set option "a"
  57. OPT_A=$OPTARG
  58. echo "-a used: $OPTARG"
  59. echo "OPT_A = $OPT_A"
  60. ;;
  61. b) #set option "b"
  62. OPT_B=$OPTARG
  63. echo "-b used: $OPTARG"
  64. echo "OPT_B = $OPT_B"
  65. ;;
  66. c) #set option "c"
  67. OPT_C=$OPTARG
  68. echo "-c used: $OPTARG"
  69. echo "OPT_C = $OPT_C"
  70. ;;
  71. d) #set option "d"
  72. OPT_D=$OPTARG
  73. echo "-d used: $OPTARG"
  74. echo "OPT_D = $OPT_D"
  75. ;;
  76. h) #show help
  77. HELP
  78. ;;
  79. \?) #unrecognized option - show help
  80. echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
  81. HELP
  82. #在這里如果你不想打印完整的幫助信息,只想顯示簡(jiǎn)單的錯(cuò)誤信息,去掉上面的兩行,同時(shí)使用下面的兩行。
  83. #echo -e "Use ${BOLD}$SCRIPT -h${NORM} to see the help documentation."\\n
  84. #exit 2
  85. ;;
  86. esac
  87. done
  88.  
  89. shift $((OPTIND-1)) #This tells getopts to move on to the next argument.
  90.  
  91. ### End getopts code ###
  92.  
  93.  
  94. ### Main loop to process files ###
  95.  
  96. #這里你可以用你的腳本處理邏輯來(lái)替代。這個(gè)例子只是在終端中打印文件的文件名和后綴名。你可以把任意其他的文件處理任務(wù)放到這個(gè)while-do循環(huán)中。
  97.  
  98. while [ $# -ne 0 ]; do
  99. FILE=$1
  100. TEMPFILE=`basename $FILE`
  101. #TEMPFILE="${FILE##*/}" #另外一種獲取不帶后綴的文件名的方法。
  102. FILE_BASE=`echo "${TEMPFILE%.*}"` #file without extension
  103. FILE_EXT="${TEMPFILE##*.}" #file extension
  104.  
  105.  
  106. echo -e \\n"Input file is: $FILE"
  107. echo "File withouth extension is: $FILE_BASE"
  108. echo -e "File extension is: $FILE_EXT"\\n
  109. shift #Move on to next input file.
  110. done
  111.  
  112. ### End main loop ###
  113.  
  114. exit 0

將上面的代碼復(fù)制到你的文本編輯器里,然后保存到你的可執(zhí)行路徑下。我將這個(gè)腳本命名為 options 并保存到/home/linerd/bin 路徑下。保存之后記得給你的腳本添加可執(zhí)行權(quán)限。

  1. chmod +x ~/bin/options

現(xiàn)在腳本已經(jīng)可以運(yùn)行了。試試用 -h 參數(shù)來(lái)打印幫助信息吧。

  1. options -h

遇到不支持的選項(xiàng),腳本同樣可以給出提示,并打印幫助信息。

  1. options -z

***,getopts可以以任意的順序處理你給的命令行參數(shù)。唯一的限制是你要處理的文件必須放在所有參數(shù)的***。

  1. options -d bar -c chu -b man -a foo example1.txt example2.txt

現(xiàn)在你可以從這些例子里看到如何通過(guò)命令行參數(shù)給腳本里的變量賦值。這個(gè)腳本里除了getopts還有很多其他的東西,但是我認(rèn)為這些就足以成為一個(gè)新腳本的開(kāi)頭模板了。如果你有興趣更深入地學(xué)習(xí)bash的getopts,你可以找找深埋在man page的“Builtins”這一節(jié)里的文檔,也可以從 Bash Reference Manual 找到信息。

接下來(lái)呢?

你會(huì)用getops來(lái)干什么呢?在評(píng)論里告訴我吧。


via: http://tuxtweaks.com/2014/05/bash-getopts/

譯者: CNprober <travelwithheart@yeah.net, QQ619913541> 校對(duì):wxy

責(zé)任編輯:黃丹 來(lái)源: Linux中國(guó)
相關(guān)推薦

2018-03-29 08:30:48

Linux命令BASH

2021-08-30 07:50:42

腳本語(yǔ)言命令行

2019-08-20 10:02:35

2020-04-26 15:38:28

Docker容器

2017-05-25 10:32:40

命令linux系統(tǒng)

2018-08-22 09:40:27

2021-02-06 14:21:12

Linux 開(kāi)發(fā)操作系統(tǒng)

2009-12-25 17:05:09

LINUX Bash

2023-06-25 12:00:53

2010-03-10 17:23:37

Python 命令行參

2010-11-24 15:33:59

mysql命令行參數(shù)

2010-06-23 14:28:23

LINUX Bash

2013-03-14 16:25:46

命令行

2018-03-30 13:06:32

Linux命令Bash

2009-11-20 09:31:47

Linux命令命令行Linux

2011-08-22 11:51:13

Linuxconfigure

2023-06-08 12:37:17

2010-07-26 09:32:41

Perl命令行

2010-07-20 14:02:38

Perl命令行參數(shù)

2019-10-12 10:12:13

Bash命令行Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产肥白大熟妇bbbb视频| 亚洲天堂电影网| 午夜毛片在线观看| 五月国产精品| 色婷婷亚洲婷婷| 视频在线精品一区| 国产三级漂亮女教师| 亚洲视频中文| 国产亚洲精品一区二区| 艹b视频在线观看| yiren22亚洲综合伊人22| 看片网站欧美日韩| 欧美精品999| 亚洲精品午夜视频| 免费一级欧美在线大片| 亚洲成av人片一区二区三区| 日韩av电影免费在线观看| 国产精品女同一区二区| 亚洲女同一区| 亚洲开心激情网| 五月婷婷六月丁香激情| 福利小视频在线| 欧美韩国一区二区| 国产精品初高中精品久久| 丁香六月婷婷综合| 天天av综合| 日韩精品在线影院| 波多野结衣免费观看| 五月天av在线| 亚洲欧美日本韩国| 欧美午夜欧美| 乱色精品无码一区二区国产盗| 日本不卡视频在线| 欧美另类高清videos| 色无极影院亚洲| 99re8这里有精品热视频免费| 色88888久久久久久影院按摩| 成年丰满熟妇午夜免费视频| av电影在线观看| av一二三不卡影片| 91久久极品少妇xxxxⅹ软件| 成人黄色片在线观看| 伊人蜜桃色噜噜激情综合| 国产午夜精品全部视频在线播放| 国产精品手机在线观看| 国产一区二区| 欧美日韩国产一二三| 男女高潮又爽又黄又无遮挡| 丝袜美女在线观看| 亚洲日本中文字幕区| 六十路精品视频| 色欲久久久天天天综合网| 国内精品免费**视频| 国产精品免费在线免费| 国产嫩bbwbbw高潮| 亚洲精品三级| 午夜精品一区二区三区av| 欧美被狂躁喷白浆精品| 国产精品毛片一区二区在线看| 中文字幕国产精品久久| 国产全是老熟女太爽了| 西瓜成人精品人成网站| 久久人人爽人人爽人人片av不| 欧美体内she精视频| 国产a级一级片| 欧美裸体视频| 亚洲国产成人91porn| 欧洲精品在线播放| 性欧美高清come| 亚洲欧洲制服丝袜| 穿情趣内衣被c到高潮视频| 麻豆av在线导航| 亚洲色图欧洲色图婷婷| www.黄色网址.com| 日本一本在线免费福利| 国产精品白丝在线| 日本视频一区二区在线观看| 国产主播福利在线| 国产精品午夜电影| 亚洲最大色综合成人av| 精精国产xxxx视频在线| 一区二区三区四区五区视频在线观看| a级黄色片免费| 第一中文字幕在线| 精品久久久久久中文字幕| 日韩少妇内射免费播放18禁裸乳| 亚洲校园激情春色| 欧美亚洲国产怡红院影院| 2025韩国理伦片在线观看| 欧美成a人片免费观看久久五月天| 欧美军同video69gay| 久久久久亚洲av无码麻豆| 国产精品22p| 欧美成人三级在线| v8888av| 精品日产免费二区日产免费二区| 综合av色偷偷网| 黄页网站免费观看| 亚洲免费一区二区| 国产精品专区h在线观看| 中文字幕丰满人伦在线| 国产成人av网站| 久久精品中文字幕一区二区三区 | 久久久综合香蕉尹人综合网 | 亚洲视频在线观看免费| 国产免费嫩草影院| 红桃视频亚洲| 国产成人精品一区二区三区| 国产一区二区在线视频观看| 成人午夜精品一区二区三区| 欧洲亚洲一区二区三区四区五区| 国产黄色小视频在线| 亚洲高清在线视频| 小明看看成人免费视频| 国产+成+人+亚洲欧洲在线| 亚洲天堂免费观看| 欧美精品一区二区成人| 久久久噜噜噜| 亚洲aⅴ男人的天堂在线观看 | 亚洲精品偷拍视频| 午夜影院在线观看国产主播| 777奇米四色成人影色区| 亚洲精品在线视频免费观看| 我不卡神马影院| 欧美一区二区三区艳史| 国产特级黄色片| 成人av网站在线| 欧洲在线视频一区| 好看的中文字幕在线播放| 欧美午夜精品久久久久久孕妇| 蜜臀aⅴ国产精品久久久国产老师| 欧美综合视频| 5252色成人免费视频| 97精品人妻一区二区三区在线| 97久久超碰国产精品| 国产日韩视频在线播放| 亚洲第一影院| 日韩大片在线观看视频| 九九热精品免费视频| 久久国产99| 国产精品制服诱惑| 97超碰在线公开在线看免费| 欧美网站大全在线观看| 日韩av在线看免费观看| 亚洲乱亚洲高清| 成人免费视频观看视频| 尤物网在线观看| 欧美午夜寂寞影院| 精品人妻无码一区| 亚洲女人av| 韩国成人av| 狠狠躁少妇一区二区三区| 日韩欧美黄色影院| 国产喷水在线观看| 久久精品国产一区二区| 台湾成人av| 日韩高清不卡| 正在播放欧美视频| 超碰在线观看91| 国产亚洲欧洲997久久综合| 大肉大捧一进一出好爽视频| 欧美黑白配在线| 国模gogo一区二区大胆私拍| 亚洲精品综合久久| 亚洲一区自拍偷拍| 免费黄色av网址| 黄色av日韩| 国产三区精品| 麻豆蜜桃在线观看| 亚洲人精品午夜在线观看| 一级一片免费看| 久久九九99视频| 亚洲视频在线a| 四虎成人av| 99久久国产免费免费| 好吊日视频在线观看| 日韩欧美一区二区视频| 国产福利久久久| 国产精品一二三四五| 久草免费福利在线| 日韩免费电影在线观看| 国产99久久精品一区二区 夜夜躁日日躁 | 香蕉视频黄色片| 色八戒一区二区三区| 男人的天堂官网| 黑人精品欧美一区二区蜜桃| 日韩国产欧美一区| 日本一区二区三区中文字幕| 九色成人免费视频| 熟妇人妻一区二区三区四区| 在线视频欧美区| 男人的午夜天堂| 国产成人免费视频网站 | 国产日产一区二区| 亚洲精品一区二区三区四区高清 | 国产成人福利在线| 国产一区二区三区日韩| 99亚洲国产精品| 亚洲精品亚洲人成在线| 国产精品亚洲激情| 亚洲91av| 尤物九九久久国产精品的特点 | 久久精品av麻豆的观看方式| japanese在线播放| 妖精视频一区二区三区| 91精品久久久久久久久中文字幕| 888av在线视频| 在线看国产精品| 国产1区在线观看| 欧美午夜电影在线播放| 免费中文字幕在线观看| 久久精品免费在线观看| 中文字幕第三区| 久久男女视频| 亚洲爆乳无码精品aaa片蜜桃| 国产精品亚洲片在线播放| 99久久无色码| 成人国产激情| 欧美一级bbbbb性bbbb喷潮片| 国产午夜精品久久久久免费视| 精品国产91乱码一区二区三区| 久久久999久久久| 午夜视频一区二区| 欧美三级黄色大片| 国产日韩欧美麻豆| 日韩Av无码精品| 国产一区二区三区在线观看精品| 国产视频一区二区三区在线播放 | swag国产精品一区二区| 国产精品v日韩精品| 成人影音在线| 久久国产精品久久久| 91成人高清| 精品国产乱码91久久久久久网站| 一级黄色片视频| 91成人在线精品| 狠狠躁夜夜躁人人爽天天高潮| 亚洲少妇30p| 青青操在线视频观看| 国产偷国产偷亚洲高清人白洁| 日本美女视频网站| 国产精品白丝jk黑袜喷水| 午夜免费福利在线| 丝袜诱惑亚洲看片| 欧美亚洲另类色图| 国产中文一区| 日韩精品一区二区在线视频| 香蕉视频国产精品| 久久久久久久久四区三区| 7777精品| 国产精品v欧美精品v日韩精品| 国产一区二区三区免费观看在线 | 成人一区二区av| 欧美成熟视频| 日本精品福利视频| 牛夜精品久久久久久久99黑人| 一区二区在线观| 精品国产乱码久久久| 欧美一进一出视频| 亚洲国产合集| 乱色588欧美| 国产99久久久国产精品成人免费 | 九九精品久久久| 久久国产人妖系列| 九九热精品国产| 国产主播一区二区三区| 国内自拍第二页| 国产乱一区二区| av电影在线播放| 久久国产精品色婷婷| 亚洲美女爱爱视频| 国产凹凸在线观看一区二区| 无码一区二区精品| 国产日韩欧美精品在线| 极品久久久久久| 欧美性猛交99久久久久99按摩| 中文字幕a级片| 精品国产一二三| 国产精品一区二区婷婷| 久久成年人视频| 性欧美freesex顶级少妇| 国产精品www| 在线日韩成人| 视频一区在线免费观看| 国产一区二区三区自拍| 欧在线一二三四区| 国产一区在线观看视频| 欧美丰满少妇人妻精品| 国产精品久久久久久亚洲伦| 日韩欧美亚洲国产| 欧美午夜精品久久久久久超碰 | 亚洲欧美日韩精品久久奇米色影视| 午夜毛片在线| 97国产精品久久| 日本午夜精品久久久久| 蜜桃精品久久久久久久免费影院 | 欧美电影免费| 北条麻妃在线视频观看| 久久99精品国产.久久久久| 三级黄色片网站| 亚洲综合一区二区三区| 人妻中文字幕一区二区三区| 亚洲电影免费观看| 精品美女在线观看视频在线观看| 欧美自拍视频在线观看| 香蕉免费一区二区三区在线观看| 日韩区国产区| 国产精品亚洲综合久久| 日本人dh亚洲人ⅹxx| 欧美激情在线观看视频免费| 国产对白videos麻豆高潮| 8v天堂国产在线一区二区| 黄色av免费在线观看| 久久久久久久久久久免费精品| 亚洲国产伊人| 亚洲狠狠婷婷综合久久久| 国产欧美日韩一区二区三区在线| 丰满人妻一区二区三区53视频| 亚洲国产精品成人综合| 中文字幕一区二区人妻电影| 精品国产乱码久久久久久1区2区 | 九一在线视频| 国模吧一区二区三区| 日本精品视频| 国产日韩第一页| 美美哒免费高清在线观看视频一区二区 | 最近2019中文字幕在线高清| 成人欧美大片| 久久国产一区二区| 亚洲人成免费| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 欧美日韩免费不卡视频一区二区三区 | 激情婷婷综合| 欧美黄色一级片视频| 久久久久国产精品免费免费搜索| 99视频在线看| 亚洲精品按摩视频| а√天堂中文在线资源8| 国产伦精品一区二区三区照片91| 尤物在线精品| 亚洲精品女人久久久| 欧美性猛交xxxx乱大交| 日韩a在线观看| 国产成人av在线播放| 精品国产一区探花在线观看| 男女曰b免费视频| 亚洲国产成人午夜在线一区| 成人黄色片在线观看| 中文字幕一区二区三区电影| 24小时成人在线视频| 97在线免费视频观看| 成人h版在线观看| 欧美a∨亚洲欧美亚洲| 日韩精品视频在线免费观看 | 91久久久精品| 红桃视频国产精品| 屁屁影院国产第一页| 色综合久久综合网欧美综合网 | 亚洲国产精品黑人久久久| 中文字幕精品一区二| 色av中文字幕一区| 国产免费av国片精品草莓男男| 992tv快乐视频| 91在线视频在线| 亚洲一级特黄毛片| 欧美巨猛xxxx猛交黑人97人| 粉嫩久久久久久久极品| 亚洲国产精品久久久久婷蜜芽| 久久久影院官网| 97成人在线观看| 久久久久免费视频| 美女久久久久| 小早川怜子一区二区三区| 亚洲成国产人片在线观看| 黄网在线观看| 亚洲iv一区二区三区| 亚洲毛片一区| 亚洲天堂av中文字幕| 日韩免费一区二区| 在线天堂资源www在线污| 在线视频91| 91在线观看免费视频| 一区二区三区亚洲视频| 欧美极度另类性三渗透| 国产亚洲第一伦理第一区| 中文字幕乱码在线人视频| 欧美日韩激情视频| 免费大片黄在线观看视频网站| 国产精品伊人日日| 蜜桃视频一区二区三区在线观看| 免费在线一区二区三区| 亚洲新声在线观看| 亚洲一区二区免费在线观看| 日韩av播放器| 亚洲国产精品欧美一二99| aⅴ在线视频男人的天堂 | 特黄视频在线观看| 成人黄色av网站| 首页亚洲欧美制服丝腿| 久久精品人妻一区二区三区|