微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ksh与bash的异同

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐