(1)
在ksh是,数组的index只能从0到1023,而bash中没有这样的限制。(2)
ksh与bash初始化数组的语法不同:如下所示icymoon#
kshicymoon#
set -A array 1 2 3 4 5; echo ${array[3]};4icymoon#
bashicymoon#
array=(1 2 3 4 5); echo ${array[3]};4icymoon#
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反复计算