linux和aix,AIX SHELL和linux shell本质上有什么区别?

本文探讨了KSH和BASH shell编程的区别,包括数组限制、初始化语法、循环控制、字符串操作和布尔表达式等方面。举例说明了如何在KSH和BASH中进行数组操作、读取用户输入、文件路径处理、逻辑判断以及数学计算。同时,文章还介绍了实用的字符串处理技巧,如提取目录名、转换文件名后缀等。
摘要由CSDN通过智能技术生成

也是从别处转载的:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值