當前位置:成語大全網 - 書法字典 - 在linux中設計的shell腳本程序可以接受從命令行輸入的參數並執行相應的菜單命令。

在linux中設計的shell腳本程序可以接受從命令行輸入的參數並執行相應的菜單命令。

使用命令行參數的關鍵是shell腳本需要與運行腳本的人進行交互。

Bash shell提供命令行參數以在命令後添加數據值)、命令行選項以修改命令行為的單字符值)並直接讀取鍵盤輸入。

1,命令行參數

向shell腳本傳遞數據的最基本方法是使用命令行參數。

1)讀取參數

輸入參數的變量是位置參數,用標準數字表示。

其中$0是程序名,$1是第壹個參數,$2是第二個參數,依此類推,直到$9是第九個參數。

Shell腳本自動將命令行參數分配給各種位置變量。

當您同時輸入多個參數時,必須使用空格來分隔它們。若要在參數值中包含空格,必須使用單引號或雙引號。)

當參數超過9個時,您必須在shell腳本中將變量括在大括號中,例如${10}。因此可以使用任意數量的參數。

2)讀取程序名稱

傳遞給變量$0的字符串實際上是程序的路徑。

使用basename命令刪除路徑前綴,只獲取程序名。

3)測試腳本

當腳本認為它應該包含參數,但實際上沒有數據時,將會出現錯誤。

壹個好方法是在使用參數之前檢查參數以確保有數據。您可以使用-n參數進行檢查。

示例:如果【–n“$ 1“】,則...其他...船方不負擔裝貨費用

2.特殊參數變量

用於跟蹤命令行參數。

1)參數計數

使用特殊變量$ #測試執行腳本時包含的命令行參數的數量。您可以在腳本的任何地方使用$ #。

示例:if【$ #-ne 2】可以測試參數的數量。

您可以使用$ {!#}返回最後壹個命令行參數。當沒有參數時,$ #為0,而$ {!#}是程序名稱)

獲取所有數據

變量$ *將命令行中提供的所有參數視為壹個單詞,並將多個參數視為壹個參數。

變量$ @將命令行中提供的所有參數視為同壹字符串中的多個單詞。允許叠代其中的值,通常使用for)來分隔不同的參數。

3.變化

shift命令可以更改命令行參數的相對位置。默默地將每個參數變量向左移動壹個位置變量$0,並丟棄$1。小心它無法恢復!)

當參數數量未知時,這是叠代參數的好方法。

您可以為shift提供壹個參數,以實現多種位移變化。

4.處理選項

選項是由破折號引導的單個字母,用於更改命令的行為。

1,找到選項。

1)處理簡單選項

選項可以像命令行參數壹樣處理,可以使用case語句來判斷選項是否符合格式。

2)將選項與參數分開

當同時使用選項和參數時,可以使用-來指示選項列表的結尾。當找到-時,shell將知道後面是壹個正常參數,並停止使用案例處理選項。

3)處理帶有值的選項

選項後跟參數值。壹種方法是使用shift並讀取案例中相應選項後的最後壹個參數。更好的方法如下:

2、使用getopt命令

getopt命令在處理選項和參數時非常方便。它重新組織了參數以便於分析。

1)命令格式

Getopt可以接受任何形式的選項和參數列表,並自動將其轉換為適當的格式。

命令格式為:getopt選項optstring參數。

Opstring用於定義命令行中的有效選項字母以及哪些選項字母需要參數值。

2)在腳本中使用getopt

您需要使用set命令將現有的命令行選項和參數替換為getopt命令生成的格式化形式。

您需要將原始腳本命令行參數發送給getopt命令,然後將getopt命令輸出發送給set命令,如下所示:set–` getopts–q ab:CD“$ @“`。

但是,getopt命令不能很好地處理帶有空格的參數值。它將空格解析為參數分隔符,而不是將雙引號引起的兩個值合並為壹個參數。解決方案如下:

3)更高級的getopts命令

getopts命令按順序處理現有的shell參數變量,並且每次調用時只處理命令中檢測到的參數之壹。處理完所有參數後,以大於0的退出狀態退出。

非常適合解析循環中的所有命令行參數。

格式:getopts optstring變量

$optarg包含用於需要參數值的選項的值,$optind包含getopts停止處理時在參數列表中的位置。

註意:當處理getopts時,選項前的-將被刪除,因此在相應的情況下不需要破折號。

良好的特性:

1)可以在參數值中包含空格。

2)選項字母和參數值之間不能有空格。

3)將命令行中所有未定義的選項綁定到壹個輸出問號中。

5.標準化選項

壹些字母選項具有標準含義。最好根據標準含義來定義選項的含義。

-a–c–d–e–f–h–I–l–n–o–q–r–s–v-x–y

6.獲取用戶輸入

當您需要在執行過程中獲取腳本執行器的輸入時,請使用read命令。

1)

read命令接受標準輸入或其他文件描述符輸入。讀取後將數據放入標準變量中。

-p允許您直接在read命令行上指定提示符。

您可以指定多個變量,也可以不指定將其放在回復環境變量中)

2 .時間安排

使用-t指定計時器,read在計時器到期前返回非零退出狀態。

使用-n指定要輸入的字符數。當輸入達到預定數量時,它將自動結束輸入。

3)默讀

使用-s使輸入不顯示在終端上,如輸入密碼)

4)讀取文件

最常用的方法是使用cat命令,並通過管道將其傳遞給包含read的while語句。