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