····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 ...