一、變數===》人與記憶體溝通的中介軟體
變數分類
系統環境變數
1、本地變數:使用者私有變數,只有使用者可以使用,儲存在家目錄下的.bash_profire、.bashrc檔案中
2、全域性變數:所有使用者都可以使用,存放在/etc/profire 、 /etc/bashrc
注:定義全域性變數前要加export
使用者自定義變數
3、使用者自定義變數: 使用者自定義的變數,比如指令碼中的變數。
變數格式:變數名=值
命名規則:
只能用英文本母、數字、下劃線。
變數名不能以數字開頭,不能有空格、不能使用標點符號。
不能使用bash裡的關鍵字
4、取消自定義變數:unset 格式:unset 變數名
注:寫在配置檔案裡的變數用unset是臨時取消
5、定義永久變數:把變數寫到配置檔案中。
本地變數:儲存在家目錄下的.bash_profire、.bashrc檔案中
全域性變數:存放在/etc/profire 、 /etc/bashrc 注:變數前加export
本地變數:執行source ~/.bash_profire 或 . ~/.bash_profire
全域性變數:執行source /etc/profire 或 . /etc/profire
6、讀取變數內容
讀取變數內容符:$ 格式:$變數名。
二、陣列:乙個變數存多個數值
1)基本陣列:
1、陣列可以讓使用者賦予多個值,需要讀取資料時只需要通過索引呼叫就可以方便讀出啦
2、陣列語法:與變數類似
陣列名稱=(元素1 元素2 元素3 ...)
3、陣列的讀出:
$索引預設是元素在陣列中的排隊編號,預設第乙個從0開始
4、陣列的賦值
方法1:一次賦乙個值
array0[0]='tom'
array0[1]='jarry'
array0[2]='natasha'
方法2: 一次賦多個值
# array2=(tom jack alice)
# array3=(`cat /etc/passwd`) 希望是將該檔案中的每乙個行作為乙個元素賦值給陣列array3
# array4=(`ls /var/ftp/shell/for*`)
# array5=(tom jack alice "bash shell")
5、檢視系統宣告過的陣列
#declare -a
6、訪問檢視自定義陣列
例:陣列array1
# echo $ 訪問陣列中的第乙個元素
# echo $ 訪問陣列中所有元素 等同於 echo $
# echo $ 統計陣列元素的個數
# echo $ 獲取陣列元素的索引
# echo $ 從陣列下標1開始
# echo $ 從陣列下標1開始,訪問兩個元素
2)關聯陣列:可以允許使用者自定義陣列索引,使用更加方便
1、首先宣告乙個關聯陣列
格式:declare -a 陣列名
檢視:declare -a
2、關聯陣列賦值:
方法一: 一次賦乙個值
陣列名[索引]=變數值
# ass_array1[index1]=pear
# ass_array1[index3]=orange
# ass_array1[index4]=peach
方法二: 一次賦多個值
# ass_array2=([index1]=tom [index2]=jack [index3]=alice [index4]='bash shell')
3、訪問陣列元素
# echo $ 訪問陣列中的第二個元數
# echo $ 訪問陣列中所有元數 等同於 echo $
# echo $ 獲得陣列元數的個數
# echo $ 獲得陣列元數的索引
三、shell中的五大運算
1、數學整數比較運算
運算子解釋 -eq 等於 -gt 大於 -lt 小於 -ge 大於或等於 -le 小於或等於 -ne 不等於
2、字串比較運算
運算子解釋,注意字串一定別忘了使用引號引起來 == 等於 != 不等於 -n 檢查字串的長度是否大於0 -z 檢查字串的長度是否為0
3、賦值運算
= 賦值運算子 例:a=8 b="liu"
注意:與字串比較運算的區別
4、檔案的比較與檢查
-d 檢查檔案是否存在且為目錄 -e 檢查檔案是否存在 -f 檢查檔案是否存在且為檔案 -r 檢查檔案是否存在且可讀 -s 檢查檔案是否存在且不為空 -w 檢查檔案是否存在且可寫 -x 檢查檔案是否存在且可執行
-o 檢查檔案是否存在並且被當前使用者擁有 -g 檢查檔案是否存在並且預設組為當前使用者組 file1 -nt file2 檢查file1是否比file2新 file1 -ot file2 檢查file1是否比file2舊
5、邏輯運算(常用)
邏輯與運算 && 邏輯或運算 || 邏輯非運算 ! 邏輯運算注意事項: 邏輯與 或 運算都需要兩個或以上條件,邏輯非運算只能乙個條件。 口訣: 邏輯與運算 真真為真 真假為假 假假為假 邏輯或運算 真真為真 真假為真 假假為假 邏輯非運算 非假為真 非真為假
四、if判斷語句
1)語法一:一種情況判斷,單if語句
格式:if [ condition ]
then
codition
fi#注:condition(條件)值為true或false
2)語法二:兩種情況判斷
if [ condition ]
then
condition
else
condition
fi3)語法三:三種情況判斷
1、嵌入式寫法
if [ condition ]
then
condition
else
if [ condition ]
then
condition
else
condition
fifi
2、if-then-elif語句寫法
if [ condition ]
then
condition
elif [ condition ]
then
condition
else
condition
fi五、if的高階應用
1、使用雙小括號(())可以在表示式中值入數學表示式
例:if (( 2*4>8 ));then
echo "yes"
else
echo "no"
fi2、使用雙方括號可以字串匹配
for n in ra rb rc dd
doif [[ $n == r* ]];then
echo $n
fidone
詳解 Shell指令碼變數判斷引數命令
系統變數 n 傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是 1,第二個引數是 2 上個命令的退出狀態,或函式的返回值。成功返回0,失敗返回1 傳遞給指令碼或函式的引數個數 所有這些引數都被雙引號引住。若乙個指令碼接收兩個引數,等於 1 2 0 正在被執行命令的名字。對...
shell 指令碼之判斷語句 if 詳解
使用 linux 系統這麼長時間,對 shell 指令碼也算是比較熟悉。其實不管是搞開發,還是搞運維,shell 指令碼都是必備的基本技能。這次抽時間好好總結一下 shell 方面的知識,綜合的再學習一下,記錄。這篇文章總結的是 shell 指令碼的 if 語句的使用。if 條件判斷 then el...
shell指令碼判斷
1.test測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案三個方面的測試,其測試符和相應的功能分別如下 1 數值測試 eq 等於則為真 ne 不等於則為真 gt 大於則為真 ge 大於等於則為真 lt 小於則為真 le 小於等於則為真 2 字串測試 等於則為真 不相等則為...