shell與if判斷詳解

2021-10-06 20:45:25 字數 3448 閱讀 1797

一、變數===》人與記憶體溝通的中介軟體

變數分類

系統環境變數

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 字串測試 等於則為真 不相等則為...