shell指令碼基礎語法(if 和 陣列)

2021-08-27 05:58:59 字數 2250 閱讀 4248

條件判斷命令:test 或者 [ ]

例:test 1 –lt 4 #判斷1<4

test語句的等價形式[ 1 –lt 4 ]

檔案測試符號

-f 存在且是普通檔案 

-d 存在且是目錄

-s 存在且位元組數大於0

-r 存在且可讀

-w 存在且可寫

-x 存在且可執行

如:test -d 「mydoc」 :判斷mydoc是否是目錄

例子:

1.判斷資料夾是否存在

#如果資料夾不存在,建立檔案

if [ ! -d "/file" ]; then

mkdir /file

fi

2.判斷資料夾是否存在且具有可執行許可權

#判斷資料夾是否存在且具有可執行許可權

if [ -d "/file" ]; then

if [ -x "/file" ]; then

echo "chmod x exist"

else

echo "chmod x no exist"

fifi

3.判斷兩個變數是否相等

#判斷兩個變數是否相等

if [ "$var1" = "$var2" ]; then

echo '$var1 eq $var2'

else

echo '$var1 not eq $var2'

fi

4.判斷乙個變數是否有值

# -n 判斷乙個變數是否有值

if [ ! -n "$var" ]; then

echo "$var is empty"

exit 0

fi

陣列定義:

可以在單行中使用一列值來定義乙個陣列: 

array_var = (1 2 3 4 5 6)

#這些值將會儲存在以0為起始索引的連續位置上

另外,還可以將陣列定義成一組「索引-值」:

array_var[0]="test1"

array_var[1]="test2"

array_var[2]="test3"

array_var[3]="test4"

array_var[4]="test5"

1.列印出特定索引的陣列元素內容:

echo $ 

test1

index=4

echo $

test5

2.以清單形式列印出陣列中的所有值:

echo $

test1 test2 test3 test4 test5

也可以這樣使用

echo $

test1 test2 test3 test4 test5

3.列印陣列長度:

echo $ 

5

shell中的關聯陣列:

1.shell 提供了另外一種陣列,其可以使用任意的字串作 為下標(不必是整數)來訪問陣列元素。這種陣列叫做關聯陣列(associative array)。 

2.關聯陣列的下標和值稱為鍵值對,它們是一一對應的關係 。在關聯陣列中,鍵是唯一的,值可以不唯一。

3.shell 的關聯陣列和 shell 的下標陣列在定義和使用上完 全一樣,只是在索引上有區別。

4.需要注意的是,在使用關聯陣列之前,需要使用命令 declare -a array 進行顯示宣告

例項:

1、name=(jim tom lucy)

2、declare -a phone

phone=([jim]=135 [tom]=136 [lucy]=158)

3、for i in `eval echo -1))}`

do echo $ phone number is

$"]}

done

關聯陣列常用語法

$ 取關聯陣列所有鍵 

$ 取關聯陣列所有鍵

$ 取關聯陣列所有值

$ 取關聯陣列所有值

$ 關聯陣列的長度

$ 關聯陣列的長度

shell 指令碼基礎語法

這句一般在 shell 指令碼的第一行。告訴作業系統,此指令碼的直譯器為 bin sh 這個可執行檔案。類似地,如果你的指令碼用 bash,ksh,解釋,第一行就應該是 bin bash bin ksh 注意 shell 指令碼對空格要求十分嚴格,關鍵字和符號之間必須加空格。1 字串判斷 str1 ...

Shell指令碼語法基礎

shell是linux下的乙個命令解析器,把一系列的命令序列寫入文字檔案就構成了shell指令碼 類似於windows中的批處理 bin sh echo something echo hello world echo hello mkdir tnt 符號 用來指定該指令碼檔案的解析程式。在上面例子中...

shell指令碼基礎 語法

一 變數 root t foot home2 zzz01 a hello root t foot home2 zzz01 echo a hello root t foot home2 zzz01 echo world hello world 其實 a和 作用相同,但是為了防止字串在拼接時,計算機無法...