9.bash shell程式設計
9.11 建立shell指令碼的步驟
Shell指令碼通常在編輯器中編寫,由命令和註釋組成。註釋通常以#開頭,用於說明程式將要做什麼事情。
第一行。在指令碼左上角的第一行用來說明程式執行指令碼的那一行。這行通常稱為shbang行。寫作:
#!/bin/bash
#!被稱為魔術數字(magic number),用於供核心確認哪個程式將翻譯並執行這個指令碼。該行必須在你的指令碼的第一行。
使指令碼可執行。當你建立一個檔案後,它並沒有執行的許可權。你需要許可權去執行它,透過chmod可以將其許可權改變為可執行
Chmod +x myscript
9.2 讀取使用者輸入
9.2.2 read 命令
read 命令是用於從終端或者檔案中讀取輸入的內鍵命令。
Read命令讀取整行輸入,每行末尾的換行符倍翻譯為Null(空字串).如果沒有知道名稱,讀取的行就被賦值給一個特定的變數reply。你也可以使用read命令。如果沒有指定名次,讀取的行就被賦值給一個特定的變數reply。你也可以使用read命令,使得程式停下來等待使用者輸入回車。
Read命令
格式 | 含義 |
Read answer | 從標準輸入讀取輸入並賦值給變數answer |
Read first last | 從標準輸入讀取輸入到第一個空格或者回車,將輸入的第一個單詞放入變數first中,並將該行其他的輸入放在變數last中 |
Read | 從標準輸入讀取一行賦值給變數reply |
Read –a arrayname | 把單詞清單讀入一個叫作arrayname的數字裡 |
Read –e | 在命令列狀態下開啟命令列編輯。如果編輯器是vi,那麼在提示符下就可以直接使用vi命令了 |
Read –p prompt | 列印提示,等待輸入,並將輸入儲存在reply中 |
Read –r line | 允許輸入包含反斜槓 |
9.3 數學計算
9.3.1 整數(declare命令和let命令)
Declare命令。用declare –i 命令可以將變數宣告為整數。如果將字串賦值給整數變數。Bash將把0賦值給該變數。
整數變數清單。Declare –i 命令後面不加任何引數,將顯示所有的整數變數和他們的值。
Let命令。Let命令是bash的內建命令,用來做數學計算和數字表示法檢測。
9.4 位置參量與命令列引數
9.4.1 位置參量
資訊可以透過命令列傳遞給指令碼。在指令碼名稱後面以空格分隔的單詞稱為引數。
命令列引數在指令碼中可以按照其位置提供參考作用。變數$#用來判斷引數的個數,而$*用來顯示所以的引數。
位置參量
位置參量 含義
$0 引用指令碼名稱
$3 獲取位置參量的個數
$* 列位置參量清單
$@ 同上
“$*” 擴充套件為一個引數
“$@” 擴充套件為彼此分隔的引數
$1….${10} 引用單個位置參量
9.4.2 set命令和位置參量
set命令可以用來重置位置參量。一旦重置,舊的參考變數清單舊丟失了。恢復位置參量用命令set -- , $0永遠是指令碼名。
9.5 條件結構和流控制
退出狀態
Bash 允許兩種型別的條件控制:命令的成功或者失敗,表示式的真或者假。在兩種情況下都需要使用退出狀態。退出狀態值為0表示成功或者為真,否則為失敗或者為假。?狀態變數報錯了一個退出狀態值相互對應的數值。
內鍵test命令
通常用內鍵的test命令給表示式賦值,這個命令也用來連線括號。可以使用test命令,或用一系列的括號代替test命令。只有test命令或者使用方括號時,表示式不能賦值。因為空格在字串中用來分隔單詞,所以包含空格的單詞需要使用使用引號。
在bash 2.x版本中,[[]]可以用來給表示式賦值(內鍵混合的test命令)。包含空格的字串在整體使用時必須被引號引用。在簡單test命令中,邏輯符號&&(邏輯和)和||(邏輯或)可以替代-a 或者 –o選項。
Test命令運算子
判斷運算子 | 判斷是否為真 |
字串判斷 | |
[string1=string2] | String1等於string2 |
[string1==string2] | String1 等於 string2 |
[string1!=string2] | String1 不等於 string2 |
[string] | String 不空 |
[-z string] | String 長度時0 |
[-n string] | String 長度非 0 |
[-l string] | String 長度 |
邏輯判斷 | |
[string 1 –a string 1] | String1 和 string2都是真 |
[string1 –o string2] | String1 或 string2 是真 |
[!string1] | String1不匹配 |
邏輯判斷(符合判斷) | |
[[pattern1&&pattern2]] | String1 和 string2都是真 |
[[pattern1 || pattern2 | String1 或 string2 是真 |
[[!pattern]] | String1不匹配 |
整數判斷 | |
[int1 –eq int2] | 等於 |
[int1 –ne int2] | 不等於 |
[int1 –gt int2] | 大於 |
[int1 –ge int2] | 列印等於 |
[int1 –lt int2] | 小於 |
[int1 –le int2] | 小於等於 |
檔案判斷中的二進位制操作 | |
[file1 –nt file2] | File1 比 file2新 |
[file1 –ot file2] | File1 比 file2舊 |
[file1 –ef file2] | File1 比 file2有相同的裝置或者i結點數 |
Let命令運算子
9.5.3 if命令
9.5.4 if/elif/else命令
9.5.5 檔案檢驗
9.5.6 null命令
Null命令用冒號表示,是一個內鍵的什麼都不做的命令,返回狀態值為0。如果在if命令後面沒有內容,同時有要避免產生錯誤資訊,舊需要在then後面寫null語句。通常null命令作為loop命令的引數來建立一個無限迴圈。
9.5.7 case命令
Case命令是一個多路分支判斷語句,可以用來替換if/elif結果。Case命令會嘗試用變數匹配value1,value2….直到匹配找到,一旦一個值匹配了case變數,就執行這個值後面的語句直到兩個分號為止。然後就從esac(就是case的反向拼寫)後面開始執行。
如果case變數沒有被匹配,程式就執行*)後面的語句,直到遇到;或者esac為至。*)d 作用跟在if/elif中的else的作用是一樣的.case值中允許出現shell萬用字元和豎線(管道)作為or運算子。
Case variable in
Value1
Command(s)
;;
Value2
Command(s)
;;
*)
Command(s)
;;
esac
9.6 迴圈命令
For 命令
While命令
Until命令
Select命令和選單
Here文件是建立選單的簡單方法,但是bash介紹了另外一種迴圈機制,叫作select迴圈,主要的作用就是建立選單。一個數字化的選單顯示在標準錯誤上,PS3用來提示使用者輸入。預設的PS3是#?.在PS3提示顯示以後,shell就等待使用者輸入。輸入的是該選單中的數字,若輸入被報存在指定變數REPLY中,則變數REPLY中的數字與括號右邊選項清單中字串有著對應的關係。
Looping命令
Shift命令。Shift命令用來把參量列表位移知道次數。沒有引數的shift把引數變數表向左位移一位。一旦位移發生,被位移出列表的引數就被永遠刪除了。通常在while迴圈中,shift用來讀取列表中的參量。
Break命令。內鍵break命令用來從迴圈中強行退出,但是不退出程式。
Continue命令。如果某些條件為真,continue命令就控制跳轉到迴圈的頂部。
9.7 函式
9.8 陷阱訊號
9.9 除錯
9.10 用getopts處理命令列選項
9.11 Eval命令與命令列解析
9.12 Bash選項
9.13 Shell內鍵命令
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245453/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell程式設計程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- Shell程式設計 --- Shell介紹程式設計
- Windows Shell 程式設計Windows程式設計
- shell程式設計(轉)程式設計
- shell程式設計二程式設計
- shell程式設計五程式設計
- Shell程式設計-shell變數1程式設計變數
- Bourne Shell及shell程式設計(轉)程式設計
- Shell程式設計-02-Shell變數程式設計變數
- Linux Shell程式設計(27)——子shellLinux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- 初識shell程式設計程式設計
- Shell 程式設計入門程式設計
- shell程式設計進階程式設計
- shell程式設計入門程式設計
- Shell程式設計-基礎程式設計
- shell併發程式設計程式設計
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- 戀上shell程式設計程式設計
- Oracle-SHELL程式設計Oracle程式設計
- shell程式設計簡介程式設計
- shell vbscript xml程式設計XML程式設計
- shell 程式設計簡記程式設計
- shell程式設計基礎程式設計
- Shell程式設計-11-子Shell和Shell巢狀程式設計巢狀
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- Shell 指令碼程式設計陷阱指令碼程式設計
- shell程式設計基礎二程式設計
- Linux之shell程式設計Linux程式設計
- shell程式設計–bash變數程式設計變數
- shell程式設計—簡介(一)程式設計
- csh shell程式設計入門程式設計
- Shell程式設計——極簡教程程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- Shell程式設計-read命令程式設計