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反覆計算
相關文章
相關標籤/搜索