實戰Linux shell程式設計與伺服器管理

2021-07-01 23:06:11 字數 3143 閱讀 2497

(1)求值時,若算數式變數不存在或空值,該變數為0

(2)數字以0開頭,視為八進位制數,0x開頭為十六進製制;不同進製的數可以使用「基底#數字」表示

(3)運算子有優先順序,初單算關邏條賦逗

(1)算數擴充套件:$( (表示式) ),表示式中可含有變數擴充套件

(1)語法:expr 表示式,將表示式結果在螢幕上輸出

(2)expr範例(使用expr要對表示式中出現bash shell特殊字元進行轉義,\)

r=』expr  引數1\|引數2『 ,如果引數1存在非空且不為0則傳回引數1,否則為引數2

r='expr 引數1\&引數2』,如果引數1與引數2皆存在,非空且不為0,則傳回引數1的值,否則傳回0

引數1與引數2比較,例如r='expr 引數1\《引數2』,成立則傳回1

語法:r=$[表示式]

(1)dalcare 例子(注意,不需轉義,也不需在變數前加$)

delcare -i  a   //將a宣告為整型

a=2+3

(2)let(注意同delcare)

let a=2+3,let b=a+2

選擇:if,case  迴圈:for,while,until

select既屬於選擇也屬於迴圈

(1)命令執行結束傳回狀態值,命令執行成功,傳回0(真值),失敗為非零值(假值)

(2)bash內建變數: $?

(1)簡單的if語法

if-then;if-then-else

(2)if的完整語法

if-then-elif-then-else

( (a>b) )與let 「a>b"兩者的應用

(1)執行某乙個命令的結果

(2)!傳回某個命令執行結果相反值

(3)使用復合命令:算式,算式結果非0,傳回真值0,結果為0,傳回假值1

(5)使用內建命令:test判斷式,判斷式為真,傳回真值0

(6)使用內建命令:[ ],形式如[判斷式],同test相同

(7)使用-a(且),-o(或)進行邏輯組合

(8)&&(命令1&&命令2,命令1為真則執行命令2)

||(命令1||命令2,命令1為假則執行命令2)

&&與||合用可以起到if-then-else的效果 注:

(1)條件測試方法中只有[[ ]]可以不受特殊字元的影響,不用轉衣符,同(( ))

(2)[[判斷式]]中,若果使用==或者!=,字元若沒有引號,表示比較樣式,加上引號才表示比較二者是否相等

(1)「單元」以及「二元」條件判斷式

(2)關於檔案屬性的判斷式(-a,-b......)

(3)關於字串的條件判斷式(-z,-n,==,=,!=,<,>)

(4)對比字串時,最好將兩個字串都打上雙引號,避免變數內容為空時造成語法錯誤

(5)關於算式的條件判斷式(-eq,-ne......)

(1)case的語法結構

(2)高階樣式(?,*,+,@,!)

(1)for的語法結構(序列是一些字串的組合,彼此用$ifs所定義的分隔字元,如空格符隔開)

for 變數 in序列 do

命令區域

done

(2)for另外的用法(類似於c語言)

for( (初始條件;終止條件;異動項) ) do

命令區域

done

(3)for無窮迴圈

(1)while語法

(2)while無窮迴圈

(1)until語法

(2)until無窮迴圈

9.9 select命令

(1)select語法(select會給序列各個選項編號,從1開始遞增)

select 選項變數 in 序列 do

命令區域

done

(1)break命令

跳出多層迴圈,break n

(2)continue命令

continue n

(1)函式(function)的三種語法

(2)函式的結束狀態(函式最後乙個命令的傳回值代表函式結束狀態)

(1)函式的作用範圍

當前shell內有效,export -f 函式名稱 傳遞給子shell

(2)變數的作用範圍

在shell中定義的變數在函式中依然有效,在函式中定義local變數

(1)傳遞引數: 函式名稱 引數1 引數2.....當函式借用命令列的位置引數時,原位置引數會被暫時儲存起來

(2)命令列的位置引數

(3)移動位置引數 shift

(4)指定位置引數值 set(原位置引數消失)

(5)取用命令列的選項和引數

語法:getopts 選項行 選項變數(使用方法見例項)

(1)函式庫的建立

(2)函式庫的呼叫方法

. 路徑\函式庫檔名或 source  路徑\函式庫檔名

學習掌握綜合例項

(1)轉向輸入,轉向輸出,轉向附加

開啟檔案、複製檔案**和關閉檔案

(1)開啟檔案

語法:fd<>  檔案 ,開啟檔案,指定檔案**fd,例子 exec 6<>test.txt(exec執行轉向,開啟檔案)

(2)關閉檔案

語法:fd<&-

例子:關閉轉向輸入檔案 exec 6<&-

關閉轉向輸出檔案 exec 6>&-

(3)複製檔案**,建立檔案連線

語法:n<&m 複製轉向輸入的檔案**m,存為n

n>&m 複製轉向輸出的檔案**m

用例  exec 1>&6(可省略1),將標準輸出連線到檔案**6

cat 0<&6(可省略0),將檔案**6的內容連線到標準輸入,並由cat顯示出來

exec 5<&0(備份標準輸入),exec 0<&5 5<&-(還原標準輸入,刪除檔案5)

幾個例項

(1)轉向輸入  fd《檔案

用例:wc -l  

轉向輸入後,標準輸入與error.log檔案建立連線,wc改由error.log讀取行數

(2)轉向輸出 fd>檔案

注:fd>|檔案,強制覆蓋檔案內容

(3)轉向附加

fd>>檔案

(4)標準錯誤伴隨標準輸出做轉向

&>檔案(命令產生的錯誤資訊輸出到檔案中)

(5)here document轉向

語法:fd《標記 資料

..... 標記

Linux Shell程式設計 函式與陣列

今天這裡我們來 一維陣列的定義 統計 引用和刪除等操作。首先來定義乙個一維陣列 a test1 test2 test3 定義陣列一般以括號的方式來定義,陣列的值可以隨機定義。如何來引用呢?echo 代表引用第乙個陣列變數,結果會顯示 test1,陣列引用從 0 開始,代表第乙個陣列,依次類推。ech...

linux shell 程式設計

bin bash comments your commands go here 首行中的符號 告訴系統其後路徑所指定的程式bash即是解釋此指令碼檔案的shell程式。除第一行外,以 開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上 這個符號表明下一行與此行會合併為同一行。有環境變...

linux shell 程式設計

1 程式設計入門 shell的簡介。從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理...