變量的設置shell
以等號鏈接,等號兩邊不能有空格數組
變量名首個字符必須是英文,可使用下劃線,不能使用標點符號,不能使用bash裏的關鍵字bash
可使用轉義字符\將特殊符號(如Enter、$、空格、!等)變成通常字符函數
關於單引號,雙引號的說明測試
單引號裏的任何字符都會原樣輸出,單引號裏的變量是無效的,單引號中不能再出現單引號spa
雙引號裏能夠出現轉義字符,雙引號中不能再出現雙引號進程
變量的顯示字符串
echo ${變量} 或 echo $變量qt
eg:io
path=/usr/local
echo ${path} 或 echo $path
shell的特殊變量
$$ 當前shell進程ID,就是這個腳本的pid
$0 當前文件名
$n 去傳遞給腳本的參數,n是幾就取第幾個參數
$# 取參數的個數
$@ 取全部參數,被雙引號「」包含時,與$*稍有不一樣
$* 取全部參數
$? 最後命令的退出狀態,0表示沒有錯誤,其餘任何值代表有錯誤
shell的算數運算
+ 加
- 減
* 乘
/ 除
% 取餘
eg:i=$((5-2)) i的值爲3
echo $(($a+$b))
echo $(($a-$b))
echo $(($a*$b))
echo $(($a/$b))
echo $(($a%$b))
shell關係運算符
關係運算符
-eq 檢測兩個數是否相等,相等返回true
-ne 檢測兩個數是否相等,不相等返回true
-qt 檢測左邊的數是否大於右邊的數,若是是,返回true
-lt 檢測左邊的數是否小於右邊的數,若是是,返回true
-ge 檢測左邊的數是否大於等於右邊的數,若是是,返回true
-qg 檢測左邊的數是否小於等於右邊的數,若是是,返回true
布爾運算符
! 非,表達式爲true則返回false,不然返回true
-o 或運算,有一個表達式爲true,返回true
-a 與運算,兩個表達式都爲true才返回true
字符串運算符
== 檢測兩個字符串是否相等,相等返回true
!= 檢測兩個字符串是否相等,不相等返回true
-z 檢測字符串長度是否爲0,爲0返回true
-n 檢測字符串長度是否不爲0,不爲0返回true
str 檢測字符串是否爲空,不爲空返回true
文件測試運算符列表
-d file 檢測文件是不是目錄,若是是,返回true
-f file 檢測文件是不是普通文件(既不是目錄,也不是設備文件),若是是,則返回true
-w file 檢測文件是否可寫,若是是,則返回true
-x file 檢測文件是否可執行,若是是,則返回true
-s file 檢測文件是否爲空(文件大小是否大於0),部位空返回true
-e file 檢測文件(包括目錄)是否存在,若是是,返回true
shell註釋
#開頭的就是註釋,shell中沒有多行註釋,只能每一行加一個#
shell字符串的操做
字符串定義能夠用雙引號、單引號,也能夠什麼都不用
eg:a=test
a="test"
a='test'
字符串拼接,直接把一個字符串跟到另外一個字符串後面便可
eg:name=emily
say="hello,$name!"
say="hello,"$name"!"
say=hello,$name!
獲取字符串長度,使用#
eg:str=studyshell
echo ${#str}
獲取字符串的某個元素
eg:str="shell is a easy language"
echo ${str:2:4} #下標是從0開始
結果爲:ell
shell數組操做
定義數組
在Shell中,用括號來表示數組,數組元素用「空格」符號分隔開,不像其餘語言中用逗號分隔,shell中只支持一維數組,數組的下標能夠不連續
eg:array=(value1 value2 value4)
也能夠經過下標賦值的方式定義一個數組
eg:array[3]=2 array[5]=test
數組的取值 ${數組名字[下標]}
eg:${array[1]}
獲取數組全部元素
eg:${array[*]} 或者 ${array[@]}
獲取數組長度
eg:${#array[*]}
shell的if判斷
if ... fi
if ... else ... fi
if ... elif ... else ... fi
語法以下:
if [ 條件表達式 ]
then 命令
else
命令
fi
if [ 條件表達式一 ]
then 命令
elif [條件表達式二]
then
命令
else
命令
fi
shell的case判斷
case $變量名稱 in
變量值1)
命令
;;
變量值2)
命令
;;
*)
命令
;;
esac
shell的for循環
for 變量 in 列表
do
命令
done
shell的while循環
while 條件
do
命令
done
shell的函數
function 函數名( )
{
命令表
return xx
}
函數應先定義,後使用
調用函數時,直接利用函數名,如showfile,沒必要帶圓括號
shell腳本與函數間的參數傳遞可利用位置參數和變量直接傳遞
一般,函數中的最後一個命令執行以後,就退出被調函數。也可利用return命令當即退出函數,其語法格式是:return [ n ]