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

如何在 Bash shell 腳本中解析命令行選項(xiàng)

運(yùn)維 系統(tǒng)運(yùn)維
關(guān)于命令行界面的 POSIX 規(guī)范 中就對(duì)選項(xiàng)做出了規(guī)范,這也是最早的 UNIX 應(yīng)用程序建立的一個(gè)由來(lái)已久的慣例,因此你在創(chuàng)建自己的命令時(shí),最好知道如何將選項(xiàng)包含進(jìn) Bash 腳本 中。
  • 給你的 shell 腳本添加選項(xiàng)。

終端命令通常具有 選項(xiàng)或開(kāi)關(guān),用戶(hù)可以使用它們來(lái)修改命令的執(zhí)行方式。關(guān)于命令行界面的 POSIX 規(guī)范 中就對(duì)選項(xiàng)做出了規(guī)范,這也是最早的 UNIX 應(yīng)用程序建立的一個(gè)由來(lái)已久的慣例,因此你在創(chuàng)建自己的命令時(shí),最好知道如何將選項(xiàng)包含進(jìn) Bash 腳本 中。

[[420224]]

與大多數(shù)語(yǔ)言一樣,有若干種方法可以解決 Bash 中解析選項(xiàng)的問(wèn)題。但直到今天,我最喜歡的方法仍然是我從 Patrick Volkerding 的 Slackware 構(gòu)建腳本中學(xué)到的方法,當(dāng)我第一次發(fā)現(xiàn) Linux 并敢于冒險(xiǎn)探索操作系統(tǒng)所附帶的純文本文件時(shí),這些腳本就是我的 shell 腳本的引路人。

Bash 中的選項(xiàng)解析

在 Bash 中解析選項(xiàng)的策略是循環(huán)遍歷所有傳遞給 shell 腳本的參數(shù),確定它們是否是一個(gè)選項(xiàng),然后轉(zhuǎn)向下一個(gè)參數(shù)。重復(fù)這個(gè)過(guò)程,直到?jīng)]有選項(xiàng)為止。

  1. #!/bin/bash 
  2. while [ True ]; do 
  3. if [ "$1" = "--alpha" -o "$1" = "-a" ]; then 
  4.     ALPHA=1 
  5.     shift 1 
  6. else 
  7.     break 
  8. fi 
  9. done 
  10. echo $ALPHA 

在這段代碼中,我創(chuàng)建了一個(gè) while 循環(huán),它會(huì)一直進(jìn)行循環(huán)操作,直到處理完所有參數(shù)。if 語(yǔ)句會(huì)試著將在第一個(gè)位置($1)中找到的參數(shù)與 --alpha 或 -a 匹配。(此處的待匹配項(xiàng)是任意選項(xiàng)名稱(chēng),并沒(méi)有特殊意義。在實(shí)際的腳本中,你可以使用 --verbose 和 -v 來(lái)觸發(fā)詳細(xì)輸出)。

shift 關(guān)鍵字會(huì)使所有參數(shù)位移一位,這樣位置 2($2)的參數(shù)移動(dòng)到位置 1($1)。處理完所有參數(shù)后會(huì)觸發(fā) else 語(yǔ)句,進(jìn)而中斷 while 循環(huán)。

在腳本的末尾,$ALPHA 的值會(huì)輸出到終端。

測(cè)試一下這個(gè)腳本:

  1. $ bash ./test.sh --alpha 
  2. $ bash ./test.sh 
  3. $ bash ./test.sh -a 

可以看到,選項(xiàng)被正確地檢測(cè)到了。

在 Bash 中檢測(cè)參數(shù)

但上面的腳本還有一個(gè)問(wèn)題:多余的參數(shù)被忽略了。

  1. $ bash ./test.sh --alpha foo 

要想捕獲非選項(xiàng)名的參數(shù),可以將剩余的參數(shù)轉(zhuǎn)儲(chǔ)到 Bash 數(shù)組 中。

  1. #!/bin/bash 
  2. while [ True ]; do 
  3. if [ "$1" = "--alpha" -o "$1" = "-a" ]; then 
  4.     ALPHA=1 
  5.     shift 1 
  6. else 
  7.     break 
  8. fi 
  9. done 
  10. echo $ALPHA 
  11. ARG=( "${@}" ) 
  12. for i in ${ARG[@]}; do 
  13.     echo $i 
  14. done 

測(cè)試一下新版的腳本:

  1. $ bash ./test.sh --alpha foo 
  2. foo 
  3. $ bash ./test.sh foo 
  4. foo 
  5. $ bash ./test.sh --alpha foo bar 
  6. foo 
  7. bar 

帶參選項(xiàng)

有一些選項(xiàng)需要傳入?yún)?shù)。比如,你可能希望允許用戶(hù)設(shè)置諸如顏色或圖形分辨率之類(lèi)的屬性,或者將應(yīng)用程序指向自定義配置文件。

要在 Bash 中實(shí)現(xiàn)這一點(diǎn),你仍然可以像使用布爾開(kāi)關(guān)一樣使用 shift 關(guān)鍵字,但參數(shù)需要位移兩位而不是一位。

  1. #!/bin/bash 
  2. while [ True ]; do 
  3. if [ "$1" = "--alpha" -o "$1" = "-a" ]; then 
  4.     ALPHA=1 
  5.     shift 1 
  6. elif [ "$1" = "--config" -o "$1" = "-c" ]; then 
  7.     CONFIG=$2 
  8.     shift 2 
  9. else 
  10.     break 
  11. fi 
  12. done 
  13. echo $ALPHA 
  14. echo $CONFIG 
  15. ARG=( "${@}" ) 
  16. for i in ${ARG[@]}; do 
  17.     echo $i 
  18. done 

在這段代碼中,我添加了一個(gè) elif 子句來(lái)將每個(gè)參數(shù)與 --config 和 -c 進(jìn)行比較。如果匹配,名為 CONFIG 的變量的值就設(shè)置為下一個(gè)參數(shù)的值(這就表示 --config 選項(xiàng)需要一個(gè)參數(shù))。所有參數(shù)都位移兩位:其中一位是跳過(guò) --config 或 -c,另一位是跳過(guò)其參數(shù)。與上節(jié)一樣,循環(huán)重復(fù)直到?jīng)]有匹配的參數(shù)。

下面是新版腳本的測(cè)試:

  1. $ bash ./test.sh --config my.conf foo bar 
  2. my.conf 
  3. foo 
  4. bar 
  5. $ bash ./test.sh -a --config my.conf baz 
  6. my.conf 
  7. baz 

Bash 讓選項(xiàng)解析變得簡(jiǎn)單

還有一些其他方法也可以解析 Bash 中的選項(xiàng)。你可以替換使用 case 語(yǔ)句或 getopt 命令。無(wú)論使用什么方法,給你的用戶(hù)提供選項(xiàng)都是應(yīng)用程序的重要功能,而 Bash 讓解析選項(xiàng)成為了一件簡(jiǎn)單的事。

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

2023-02-07 09:49:26

Linux命令行合并文件

2021-08-19 14:27:56

Java應(yīng)用程序解析方法

2014-06-17 10:02:58

Bash Getopt命令行

2022-10-14 19:30:29

Linux

2019-08-15 15:00:31

Linux命令行PDF

2022-11-23 08:14:42

bash 腳本test 命令

2022-11-03 08:13:52

echo 命令Linux

2019-04-12 15:25:15

Fedora 30內(nèi)核命令行

2016-10-12 08:38:24

Windows 10Defender命令行

2019-08-27 08:00:10

OpenStack命令虛擬機(jī)

2018-02-01 17:32:30

LinuxUNIXBash Shell

2009-12-25 17:05:09

LINUX Bash

2018-04-25 10:46:05

Linux命令行日歷

2023-08-12 11:40:11

命令行生存

2014-05-04 10:58:18

Linux命令行Linux發(fā)行版

2023-10-19 14:52:27

2018-01-24 18:30:53

瀏覽器Firefox命令行

2018-08-22 09:40:27

2009-07-20 09:55:30

華為命令行解析華為認(rèn)證

2010-08-20 10:05:23

用戶(hù)命令
點(diǎn)贊
收藏

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

欧美videos中文字幕| 国产精品久久久久久户外露出| 久久久久久久久亚洲| 国产又黄又粗又猛又爽的视频| 亚洲一二三四| 国产精品免费av| 成人av蜜桃| www.五月婷婷.com| 欧美日韩国产免费观看| 亚洲精选中文字幕| 国产又粗又长又大的视频| 成人在线播放免费观看| 91蜜桃在线免费视频| 国产精品亚洲精品| 日韩在线视频免费播放| 五月开心六月丁香综合色啪| 亚洲国产成人精品久久久国产成人一区 | 国产女人18毛片水真多| 欧美精品99| 国产一区二区成人| aaaa黄色片| 色综合.com| 一本到高清视频免费精品| 福利网在线观看| 国产有码在线| 91丨国产丨九色丨pron| 风间由美久久久| 国产精品丝袜黑色高跟鞋| 国产精品日本欧美一区二区三区| 久久最新资源网| av黄色免费在线观看| 五月国产精品| 亚洲国产精品久久精品怡红院| 天天爽夜夜爽一区二区三区| 欧美日韩国产v| 精品美女国产在线| 狠狠干视频网站| 欧美日韩欧美| 中日韩av电影| 日韩av高清在线播放| 日韩在线免费播放| 91蜜桃婷婷狠狠久久综合9色| 91九色在线观看| 国产同性人妖ts口直男| 久久99日本精品| 国产日韩欧美在线观看| 伊人网站在线观看| 奇米精品一区二区三区在线观看 | 成人精品gif动图一区| 91在线中文字幕| 国产女主播福利| 国产一区中文字幕| 91在线观看网站| a在线观看视频| 丁香五精品蜜臀久久久久99网站 | 国产精彩免费视频| 欧美成人免费电影| 欧美性一二三区| wwww.国产| 日韩一级视频| 欧美一级电影网站| 无码av免费精品一区二区三区| 日韩一二三区| 精品av久久707| 在线免费观看a级片| 性人久久久久| 一区二区欧美日韩视频| 四虎影视一区二区| 中文在线播放一区二区 | 久久久久久久久久一区二区三区| 亚洲欧美亚洲| 68精品久久久久久欧美| 亚洲 日本 欧美 中文幕| 日韩高清中文字幕一区| 国产精品视频免费观看www| 国产影视一区二区| 成人性视频免费网站| 欧美一级日本a级v片| 天堂资源在线中文| 亚洲一区二区三区爽爽爽爽爽 | 日韩综合一区二区| 国产精品网站视频| www.天堂在线| 久久免费的精品国产v∧| 亚洲成人一区二区三区| av免费网站在线| 五月天婷婷综合| jizzzz日本| 第一区第二区在线| 国产亚洲精品日韩| 九九热精品在线观看| 国产欧美激情| 成人性生交大片免费看小说 | 成人av网址在线观看| 欧美日韩一区二区三区在线观看免| a中文在线播放| 亚洲综合一二三区| 婷婷丁香激情网| 成人h动漫精品一区二区器材| 亚洲欧美日韩高清| 精品无码久久久久| 男男成人高潮片免费网站| 超碰97在线资源| lutube成人福利在线观看| 一区二区久久久久| 亚洲最大综合网| 超碰精品在线观看| 久久精品国产亚洲精品| 免费观看成人毛片| 国产高清视频一区| 五月天亚洲综合情| 91九色美女在线视频| 欧美二区在线观看| 久久久久久久久久久久久久久| 欧美精品网站| 国产精品视频久久久久| 日本护士...精品国| 一区二区三区加勒比av| 青青草原国产在线视频| 免费av一区| 韩国三级电影久久久久久| 国产精品久久久久久免费免熟| 久久五月婷婷丁香社区| 美脚丝袜脚交一区二区| 国产日韩欧美中文在线| 永久免费看mv网站入口亚洲| www.国产高清| 成人av在线观| 国产xxxx振车| 欧美videos粗暴| 亚洲网址你懂得| av片免费观看| 91麻豆免费在线观看| 超碰成人免费在线| 日韩在线网址| 欧美黑人xxxⅹ高潮交| 国产超碰人人模人人爽人人添| 中文子幕无线码一区tr | 国产精品一区二区三区99| 亚洲成人自拍| 欧美另类激情| 日韩有码在线电影| 一级黄色大片免费观看| 中文字幕不卡在线| 邪恶网站在线观看| 91青青国产在线观看精品| 国产啪精品视频| 日本中文在线| 欧美一区二区私人影院日本| 手机av在线看| 国产一区二区女| 成人一级生活片| 加勒比色老久久爱综合网| 久久久综合av| 性高潮久久久久久久久久| 黑人巨大精品欧美一区二区免费| 中文字幕乱视频| 午夜在线视频观看日韩17c| 久久99蜜桃综合影院免费观看| 忘忧草在线日韩www影院| 亚洲精品一区二三区不卡| 亚洲视频 欧美视频| 欧美激情在线一区二区三区| 中国黄色片免费看| 一区二区三区毛片免费| 99一区二区三区| 涩涩视频在线| 在线播放日韩av| 国产成人av免费看| 亚洲福利电影网| 自拍偷拍亚洲天堂| 精品一区二区精品| 黄色一级片黄色| 天堂在线精品| 91精品国产综合久久男男| 少妇av在线| 亚洲精品日韩久久久| 中文字幕精品一区二| 亚洲天堂成人在线观看| 伊人网综合视频| 琪琪一区二区三区| a级免费在线观看| 国产精品欧美日韩一区| 91精品视频在线| 欧美裸体视频| 久久久国产成人精品| 偷拍25位美女撒尿视频在线观看| 在线一区二区观看| 久草视频在线资源| 久久久久久久精| 日本中文字幕观看| 国产精品久久久久久模特 | 黄色免费视频网站| 美日韩一级片在线观看| 日本三级中文字幕在线观看| 欧美变态网站| 91精品国产综合久久久久久久久| 国产蜜臀一区二区打屁股调教| 亚洲人精品午夜在线观看| 国产欧美综合视频| 色狠狠av一区二区三区| 中文字幕在线有码| 国产日韩一级二级三级| 一级全黄裸体片| 石原莉奈一区二区三区在线观看| 欧美一级中文字幕| 精品美女在线视频| 狠狠色狠狠色综合人人| 欧美午夜网站| 国产精品日韩在线播放| 日韩理论视频| 欧美日韩高清区| 免费在线观看黄色网| 亚洲国产日韩欧美在线动漫| 国产女人18毛片18精品| 在线亚洲一区二区| 欧美三日本三级少妇99| 一区二区在线电影| 成年人免费视频播放| 久久影音资源网| 亚洲香蕉中文网| 国产乱码精品一品二品| 天天操,天天操| 日韩国产欧美一区二区三区| 青青青国产在线观看| 欧美国内亚洲| 精品91一区二区三区| 日韩久久电影| 亚洲国产精品www| 国产伦精品一区二区三区千人斩| 久久久久久九九九九| 精品网站aaa| 国产精品果冻传媒潘| 日本精品一区二区三区在线观看视频| 国产精品视频中文字幕91| 成人黄色免费短视频| 人九九综合九九宗合| 高端美女服务在线视频播放| 欧美成年人视频| 伊人在我在线看导航| 久久艹在线视频| 99视频免费在线观看| 欧美另类在线观看| 性欧美1819sex性高清大胸| 久久在线观看视频| av大大超碰在线| 欧美国产日韩精品| 成人女同在线观看| 97视频com| 午夜影视一区二区三区| 欧美在线观看视频| av有声小说一区二区三区| 国产精品18久久久久久首页狼| 日韩欧美一区二区三区在线观看 | 国产主播第一页| 欧美亚洲综合网| 亚洲天堂aaa| 日韩一区二区在线免费观看| www.国产.com| 日韩av最新在线| 九色蝌蚪在线| 色综合伊人色综合网站| 搞黄网站在线观看| 高清一区二区三区四区五区| 黄色软件视频在线观看| 日韩av免费在线看| 久久精品黄色| 成人免费视频视频在| 任我爽精品视频在线播放| 亚洲最大的黄色网址| 亚洲人体大胆视频| 草草久久久无码国产专区| 性感少妇一区| 欧美一级特黄a| 国产精品一卡二卡在线观看| 88av在线播放| 国产午夜精品一区二区| 搜索黄色一级片| 午夜久久久久久久久| 久久久精品毛片| 欧美一区二区女人| 视频污在线观看| 中文字幕日韩av电影| 在线视频中文字幕第一页| 992tv成人免费视频| 天天综合网天天| 亚洲精品欧美一区二区三区| 任你弄精品视频免费观看| 一区二区不卡视频| 国产欧美一区二区色老头| 黄色手机在线视频| 不卡电影一区二区三区| 美国美女黄色片| 亚洲va欧美va人人爽| 中文字幕在线观看高清| 亚洲精品一区二区三区四区高清| 高清在线观看av| 午夜欧美不卡精品aaaaa| 欧美男男gaygay1069| 蜜桃精品久久久久久久免费影院| 久久精品国产亚洲夜色av网站| aa视频在线播放| 精品无人区卡一卡二卡三乱码免费卡| 国产麻豆剧传媒精品国产av| 中文字幕中文字幕一区| 在线观看中文字幕视频| 日韩精品一区二区三区四区 | 久久蜜桃一区二区| 久久久久无码精品国产| 欧美色视频一区| 天堂在线中文字幕| 欧美激情18p| 亚洲美女色播| 视频一区二区三| 国产欧美91| 国产性生活毛片| 亚洲自拍偷拍麻豆| 国产精品免费无遮挡| 在线日韩欧美视频| 亚洲最大网站| 国产日韩欧美精品| 黄色国产精品| a级大片免费看| 日韩理论片网站| 亚洲一区二区视频在线播放| 亚洲人成在线观看| 亚洲最大网站| 欧美日韩三区四区| 新狼窝色av性久久久久久| av在线播放网址| 亚洲超碰精品一区二区| 亚洲黄色片视频| 欧美精品福利视频| 日韩激情综合| 水蜜桃在线免费观看| 黑人精品欧美一区二区蜜桃| 九九热久久免费视频| 欧美探花视频资源| 国产二区视频在线观看| 国产精品99久久久久久人| 精品久久久久中文字幕小说| 人妻熟女一二三区夜夜爱| 91免费版在线看| 无码人妻丰满熟妇精品| 亚洲女人天堂色在线7777| 亚洲第一av| 日本10禁啪啪无遮挡免费一区二区| 亚洲欧美日韩专区| 伊人网在线视频观看| 日本韩国一区二区| 成人网视频在线观看| 国产精品免费在线免费| 欧美残忍xxxx极端| 国产又黄又嫩又滑又白| 亚洲一区欧美一区| 天天干天天做天天操| 欧美在线免费观看| 欧美精品一区二区三区中文字幕| 美女喷白浆视频| 中文字幕在线不卡| 成人福利小视频| 亚州av一区二区| 欧美日韩性在线观看| www,av在线| 午夜电影久久久| 粉嫩av一区| 亚洲va码欧洲m码| 一区二区三区四区五区精品视频 | 欧美性受xxxx狂喷水| 91sa在线看| 欧美亚洲精品在线| 人妻体体内射精一区二区| 亚洲电影激情视频网站| 酒色婷婷桃色成人免费av网| 国产女精品视频网站免费| 欧美精品大片| 人妻体内射精一区二区| 欧美理论片在线| av影视在线看| 亚洲国产日韩综合一区| 国产高清不卡一区二区| 亚洲永久精品在线观看| 日韩在线视频二区| 福利片在线一区二区| 99视频在线免费| 一区二区久久久| 91在线不卡| 国内视频一区| 久久66热偷产精品| 欧美三级午夜理伦| 久久夜精品va视频免费观看| 日本国产精品| 亚洲高清av一区二区三区| 日韩欧美中文免费| av在线免费网站| 日韩精品资源| www.欧美日韩国产在线| 国产精品久久久久久免费免熟| 国产91|九色| 欧美影院一区|