(1) 在ksh是,數組的index只能從0到1023,而bash中沒有這樣的限制。 (2) ksh與bash初始化數組的語法不一樣: 以下所示 icymoon# ksh icymoon# set -A array 1 2 3 4 5; echo ${array[3]}; 4 icymoon# bash icymoon# array=(1 2 3 4 5); echo ${array[3]}; 4 icymoon# array=([0]=1 [3]=2 [2]=3); echo ${array[3]} 2 1. 內置read命令 read VARIABLE?\ "xxxxxxxxxxxxxx" 2. 反義循環 until [[ ... ]] #這裏的[[ ]]是ksh的括號,比sh的[]括號,[[]]可以支持更多,更強大的命令行選項 do xxxxxxx done 2. 字符串的操做 咱們有basename取出文件名,可是若是須要獲得目錄名呢? FULLPATH=`pwd`/$0 DIR=${FULLPATH%${FILENAME}}#從變量FULLPATH的最後開始,搜索第一個FILENAME的匹配,並刪除 %% 後面 最後一個 # 前面 第一個 ## 後面 最後一個 DIR=${DIR%\/} #去掉反斜槓 basename=$(filename%%.cpp) #去掉文件名的.cpp後綴 3. 布爾操做 sh的布爾操做是-a -o,ksh能夠 if [[ test1 && test2 ]]就像C語言的邏輯操做同樣 4. 把一個字符串拆成一個數組,元素之間是以空格或tab分隔 set -A Array $input if [[ -z ${Array[0]} ]]echo"空的數組" 取數組下標和C語言相似,固然必須用${}包含 5. for數據(sh兼容) for file in $inputfiles do cat $file|tr '[A-Z]' '[a-z]'|sed -e '/^$/d' -e '/^#/d' #全部字符變成小寫,並刪除空行和註釋行('#'開頭) done 6. 尋找新的文件 NEWER=`find $CLASSFILE -newer $JAVAFILE` 7. 直接數學計算 $ let x=0 $ let x=x+2 不須要使用expr反覆計算