(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日益完善的今天,在系統管理...