(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反复计算