第4章 處理使用者輸入與顯示資料------------(getopt命令)
4.2.3 使用getopt命令
getopt命令是個不錯的工具,在處理命令列選項和引數時非常方便。它對命令列引數進行重現組織,使其更便於在指令碼中解析。
1.命令格式
getopt命令可以接受任意形式的命令列選項和引數列表,並自動將這些選項和引數轉換為適當的格式。命令格式如下:getopt options optstringparameters。選項字串(optstring)是處理的關鍵。它定義命令列中的有效選項字母。它還定義那些選項字母需要的引數值。
首先,在選項字串中列出將在指令碼中用到的每個命令列選項字母。然後,在每個需要引數值的選項字母后面放置一個冒號。
其中的選項字串定義了四個有效選項字母,a、b、c和d。還定義選項字母需要一個引數值。當執行getopt命令時,會檢測提供的引數列表,然後基於提供的選項字串對列表進行解析。注意,解析時自動將-cd選項分隔成兩個不同的選項,並插入雙破折號來分隔行中的額外引數。
如果指定的選項不包含在選項字串,getopt命令會預設生成一個錯誤訊息。如果想忽略這個錯誤訊息,可以在命令中使用-q選項。注意,getopt命令選項必須列在選項字串前面。現在就可以在指令碼中使用這個命令來處理命令列選項。
2.在指令碼中使用getopt
可以在指令碼中使用getopt命令格式化為指令碼輸入的任意命令列選項或引數。這裡使用一點小技巧。這個小技巧是將現有的命令列選項和引數替換為getopt命令生成的格式化形式。方法是使用set命令。set命令可以處理shell中的各種變數。set命令的一個選項是雙破折號,表示將命令列引數變數替換為set命令的命令列中的值。
於是,這個技巧便是:將原始指令碼命令列引數送給getopt命令,然後將getopt命令的輸出送給set命令,以便將原始命令列引數替換為通過getopt格式化過的更精細的形式。如下所示:set -- `getopt -q ab:c "
#!/bin/bash
set -- `getopt -q hl:t:a "[email protected]"`
while [ -n "$1" ]
do
case "$1" in
-h) echo "Found the -h options";;
-l) para="$2"
echo "Found the -l options,with the parameter value $para"
shift;;
-a) echo "Found the -a options";;
-t) para=$2
echo "Found the -t options,with the parameter value $para"
shift;;
--) shift
break;;
*) echo "$1 is not options";;
esac
#所有命令列引數值左移一位
shift
done
echo "輸出選項引數"
count=1
for para in [email protected]
do
echo "引數#$1:$para"
count=$[ $count+1 ]
done
getopt命令不能很好的處理帶有空格的引數值。它將空格解析為引數分隔符,而不是將雙引號引起來的兩個值合併為一個引數。
相關推薦
第4章 處理使用者輸入與顯示資料------------(getopt命令)
4.2.3 使用getopt命令 getopt命令是個不錯的工具,在處理命令列選項和引數時非常方便。它對命令列引數進行重現組織,使其更便於在指令碼中解析。 1.命令格式 getopt命令可以接受任意形式的命令列選項和引數列表,並自動將這些
第4章 處理使用者輸入與顯示資料------------(標準檔案描述符、STDIN/STDERR/STDOUT、臨時重定向、永久重定向exec)
4.4 顯示資料 4.4.1 標準檔案描述符 Linux系統將每個物件當作檔案處理。這包括輸入和輸出過程。Linux使用檔案描述符(file descriptor)標識每個檔案物件。檔案描述符是一個非負整數,可以唯一地標識會話中開啟的檔案。每個進行最多可以
redis實戰筆記(4)-第4章 數據安全與性能保障
4.6 特殊 pac 命名 可用 lsp sentinel 樂觀鎖 個人開發 本章主要內容 4.1 將數據持久化至硬盤 4.2 將數據復制至其他機器 4.3 處理系統故障 4.4 Redis事務 4.5 非事務型流水線( non-transactional pipeline
第4章 ZK基本特性與基於Linux的ZK客戶端命令列學習
ZK基本特性與基於Linux的ZK客戶端命令列學習 4-1 zookeeper常用命令列操作 4-2 session的基本原理與create命令的使用 4-3 set與delete命令的使用 4-4 zk特性 – 理解watcher機制 4-5
第4章 css文字text與字型font-face
text-overflow 與 word-wrap text-overflow:用來設定是否使用一個省略標記(...)標示物件內文字的溢位。 語法: 但是text-overflow只是用來說明文字溢位時用什麼方式顯示,要實現溢位時產生省略號的效果,還須定義強制文字在一行內顯示(white-space:n
《瘋狂Java講義(第4版)》-----第4章【流程控制與陣列】
Java7增強後的switch語句 switch後的控制表示式只能是byte、short、char、int、列舉型別和java.lang.String型別。 char c = 'A'; switch(c){ case 'A': System.out.pri
易學筆記-go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.3 函式體內最簡單的變數初始化
函式體內最簡單的變數賦值 格式: 變數名 := 值 舉例: var goos string = os.Getenv("GOOS") fmt.Printf("The operating system is: %s\n", goos) //函式體內最
易學筆記-go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.2 宣告和賦值語句結合
宣告和賦值語句結合 格式:var identifier [type] = value 這裡的type是可選的,具體的型別參照: 第4章:基本結構和基本資料型別/4.2 Go 程式的基本結構和要素/4.2.8 型別 顯式型別舉例: //整型 var a&nbs
易學筆記-go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.4 函式體內並行初始化
函式體內並行賦值 在 第4章:基本結構和基本資料型別/4.4 變數/4.4.3 函式體內最簡單的變數賦值基礎上,多個變數同時賦值 舉例: 程式碼: a, b, c := 5, 10, "易學筆記" fmt.Printf("a&n
易學筆記-Go語言-第4章:基本結構和基本資料型別/4.5 基本型別/4.5.2 整形
整形 固定位元組數整形:與作業系統無關 int 和 uint 在 32 位作業系統上,它們均使用 32 位(4 個位元組),在 64 位作業系統上,它們均使用 64 位(8 個位元組)。 uintptr 存放指標 指定位元組
易學筆記-Go語言-第4章:基本結構和基本資料型別/4.5 基本型別/4.5.1 bool型別
bool型別 關鍵字:bool,兩個結果:true 或者 false 何時回產生bool型別 ==:相等性筆記 !=:不相等性筆記 >、>=、<、<=:比較 可以進行的邏輯運算
易學筆記-Go語言-第4章:基本結構和基本資料型別/4.4 變數/4.4.7 變數的作用域
變數的作用域 變數的作用域有幾種: 包間變數:也是在函式外宣告的變數,而且第一個字母是大寫,所有本包函式或者包外函式都可見 全域性變數:在函式外宣告的變數,所有函式都可見 區域性變數:在本函式內部都可見 塊變數:僅僅在某個塊中可見,
第4章:基本結構和基本資料型別/4.2 Go 程式的基本結構和要素/4.2.5 可見性
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
第4章:基本結構和基本資料型別/4.2 Go 程式的基本結構和要素/4.2.4 import:匯入包
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
第4章:基本結構和基本資料型別/4.2 Go 程式的基本結構和要素/4.2.6 函式
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
第8章 插入、更新與刪除資料
8.1 插入資料 INSER INTO的各種插入法 8.2 更新資料 UPDATE可以更新表中的記錄。基本句法如下: UPDATE table_name SET column_name1=value1,column_name1=value2,... WHERE(condition);
易學筆記-Go語言-第4章:基本結構和基本資料型別/4.6 字串概述/4.6.1 字串表示
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
易學筆記-Go語言-第4章:基本結構和基本資料型別/4.5 基本型別/4.5.6 位運算
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
易學筆記-Go語言-第4章:基本結構和基本資料型別/4.5 基本型別/4.5.7 隨機數
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
《影象處理、分析與機器視覺》(第4版)閱讀筆記——第三章 影象及其數學與物理背景
3.1 概述 3.1.1 線性 向量(線性)空間(vector(linear) space) 3.1.2 狄拉克(Dirac)分佈和卷積 理想的衝擊是一個重要的輸入訊號,影象平面上的理想衝擊是用狄拉克分佈(Dirac distribution)定義的,。相當於訊號處理中的單位階躍函式