shell程式設計基礎

2021-08-02 18:54:07 字數 3830 閱讀 2015

····shell變數

定義變數

variablename="value"

使用變數

echo

$ 唯讀變數

readonly variablename

刪除變數

unset variablename

變數型別

1)區域性變數

僅僅當前shell自己使用。

2)環境變數

全部shell都能使用。

3)shell變數

指令碼中設定的變數,指令碼執行結束就消失。

····shell特殊變數

$0 當前指令碼名

$n 傳遞給指令碼或者函式的第n個引數。

$# 傳遞給指令碼或者函式的引數個數。

$* 傳遞給指令碼或函式的所有引數。

$@ 傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,傳給函式的引數作為整體 「aa bb cc dd」。

$? 上個命令的執行狀態。

$$ 當前shell的程序id。

····shell替換

轉義字元

echo

-e 表示對轉義字元進行替換

以下轉移命令:

\\ 反斜槓

\a 警報,響鈴

\b 退格(刪除鍵)

\f 換頁(ff),將當前位置移到下頁開頭

\n 換行

\r 回車

\t 水平製表符(tab鍵)

\v 垂直製表符

命令替換

variablename=`command` 使用反引號

shell變數刪除

從前匹配刪除

path=123456789123456789

echo

$ 輸出結果 456789123456789

echo

$ 輸出結果 456789

從後匹配刪除

filename=file.bak.bak

echo

$ 輸出結果 file.bak

echo

$ 輸出結果 file

shell變數取代

new=abcabcabc

echo

$ 輸出結果 abcabcabc

echo

$ 輸出結果 abcabcabc

shell變數替換

var=$

str未宣告 str為空 str非空

str= str= str=zww

var=expr var= var=zww

var1=$

str1未宣告 str1為空 str1非空

str1= str1= str1=zww

var1=expr var1=expr var1=zww

var2=$

str2未宣告 str2為空 str2為空

str2= str2= str2=

var2= var2=expr var2=expr

var3=$

str3未宣告 str3為空 str3非空

str3= str3= str3=zww

var3= var3= var3=expr

var4=$

str4未宣告 str4為空 str4非空

str4=expr str4= str4=zww

var4=expr var4= var4=zww

var5=$

str5未宣告 str5為空 str5非空

str5=expr str5=expr str5=zww

var5=expr var5=expr var5=zww

var6=$

str6未宣告

./zww.sh: line 75: str6: expr

str6為空

./zww.sh: line 77: str6: expr

str6非空

str6=zww

var6=zww

var7=$

str7未宣告

./zww.sh: line 84: str7: expr

str7為空

./zww.sh: line 87: str7: expr

str7非空

str7=zww

var7=zww

····shell運算子

數字運算子

expr 4 + 4 加法

expr 4 - 2 減法

expr 4 \* 4 乘法

expr 8 / 2 除法

expr 8 % 2 取餘

關係運算子

[ $a == $b ] [ $a

-eq$b ] 是否相等

[ $a != $b ] [ $a

-ne$b ] 是否不等

[ $a -le $b ] 是否小於

[ $a

-lt$b ] 是否小於等於

[ $a -ge $b ] 是否大於

[ $a

-gt$b ] 是否大於等於

布林運算子

[ ! false ] 返回 true。

$a-lt20 -o $b

-gt100 ] 返回 true。

$a-lt20

-a$b

-gt100 ] 返回 false。

字串運算子

[ $a = $b ] 兩字串相同,為真。

[ $a != $b ] 兩字串不同,為真。

[ -z $a ] 字串為空時,為真。

[ str ] 字串非空時,為真。

····shel字串

單引號 單引號裡的任何字元都會原樣輸出

雙引號 雙引號裡可以有變數

獲取字串長度

echo

$ 提取子字串

echo

$ 字串刪除

path=123456789123456789

echo

$ 輸出結果 456789123456789

echo

$ 輸出結果 456789

filename=file.bak.bak

echo

$ 輸出結果 file.bak

echo

$ 輸出結果 file

字串取代

new=abcabcabc

echo

$ 輸出結果 abcabcabc

echo

$ 輸出結果 abcabcabc

····shell陣列

陣列的定義

array_name=(value0 value1 value2 value3)

還可以單獨定義陣列的各個分量:

array_name[0]=value0

array_name[1]=value1

array_name[2]=value2

讀取valuen=$

使用@ 或 * 可以獲取陣列中的所有元素$$

獲取陣列的長度

# 取得陣列元素的個數

length=$

# 或者

length=$

# 取得陣列單個元素的長度

lengthn=$

Shell 程式設計基礎

2 shell 程式設計基礎 shell 簡介認識後台程式 bash 程式設計熟悉 linux 系統下的編輯環境 熟悉linux 下的各種 shell 熟練進行 shell 程式設計熟悉 vi基本操作 熟悉emacs 的基本操作 比較不同 shell 的區別編寫乙個測試伺服器是否連通的 shell ...

shell程式設計基礎

1.熟悉shell 1.1 基本語法 bin bash shell必須以上面所示的開頭,以 開頭的語句表示注釋。1.2 新增可執行許可權 chmod u x 檔名 1.3 建立簡單的shell bin bash echo n hell user,today is date echo good luc...

shell 程式設計基礎

1.基礎正規表示式 aa 表示至少包含乙個a的行,a 匹配所有內容 匹配任意乙個字元,精準匹配 grep 提取文字中的字元 grep v root 取反不包括root的行 2.cut 命令 f第幾列 d分隔符 3.printf ni輸出n個整數 ns n個字元 m.nf m.nprintf s t ...