條件判斷命令:test 或者 [ ]
例:test 1 –lt 4 #判斷1<4 test語句的等價形式[ 1 –lt 4 ]
文件測試符號
-f 存在且是普通文件 -d 存在且是目錄 -s 存在且字節(jié)數(shù)大于0 -r 存在且可讀 -w 存在且可寫 -x 存在且可執(zhí)行 如:test -d “mydoc” :判斷mydoc是否是目錄
例子:
1.判斷文件夾是否存在
#如果文件夾不存在,創(chuàng)建文件 if [ ! -d "/file" ]; then mkdir /file fi
2.判斷文件夾是否存在且具有可執(zhí)行權(quán)限
#判斷文件夾是否存在且具有可執(zhí)行權(quán)限 if [ -d "/file" ]; then if [ -x "/file" ]; then echo "chmod x exist" else echo "chmod x no exist" fi fi
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
數(shù)組定義:
可以在單行中使用一列值來定義一個數(shù)組: array_var = (1 2 3 4 5 6) #這些值將會存儲在以0為起始索引的連續(xù)位置上 另外,還可以將數(shù)組定義成一組“索引-值”: array_var[0]="test1" array_var[1]="test2" array_var[2]="test3" array_var[3]="test4" array_var[4]="test5"
1.打印出特定索引的數(shù)組元素內(nèi)容:
echo ${array_var[0]} test1 index=4 echo ${array_var[$index]} test5
2.以清單形式打印出數(shù)組中的所有值:
echo ${array_var[*]} test1 test2 test3 test4 test5 也可以這樣使用 echo ${array_var[@]} test1 test2 test3 test4 test5
3.打印數(shù)組長度:
echo ${#array_var[*]} 5
shell中的關(guān)聯(lián)數(shù)組:
1.shell 提供了另外一種數(shù)組,其可以使用任意的字符串作 為下標(不必是整數(shù))來訪問數(shù)組元素。這種數(shù)組叫做關(guān)聯(lián)數(shù)組(associative array)。 2.關(guān)聯(lián)數(shù)組的下標和值稱為鍵值對,它們是一一對應的關(guān)系 。在關(guān)聯(lián)數(shù)組中,鍵是唯一的,值可以不唯一。 3.shell 的關(guān)聯(lián)數(shù)組和 shell 的下標數(shù)組在定義和使用上完 全一樣,只是在索引上有區(qū)別。 4.需要注意的是,在使用關(guān)聯(lián)數(shù)組之前,需要使用命令 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 {0..$((${#name[*]}-1))}` do echo ${name[i]} phone number is ${phone["${name[i]}"]} done
關(guān)聯(lián)數(shù)組常用語法
${!array[*]} 取關(guān)聯(lián)數(shù)組所有鍵 ${!array[@]} 取關(guān)聯(lián)數(shù)組所有鍵 ${array[*]} 取關(guān)聯(lián)數(shù)組所有值 ${array[@]} 取關(guān)聯(lián)數(shù)組所有值 ${#array[*]} 關(guān)聯(lián)數(shù)組的長度 ${#array[@]} 關(guān)聯(lián)數(shù)組的長度