一、实践证明,在AIX上用的是ksh,linux上是bash

sh或bsh,全名是bourne shell。它最早出现,是标准shell。后两者都兼容它。
ksh和bash后续加入了历史记录,交互特性,数组,等新功能。
ksh在unix上使用较多。比如hpux,AIX
bash在linux上使用较多。

也可以用这些做命令跳到另一个shell,看个人习惯用哪个:
jimmy-cao@jimmycao-ThinkPad-Edge:~$ sh
$ bash
jimmy-cao@jimmycao-ThinkPad-Edge:~$ ksh
$

bash可以使用tab键补全,ksh貌似不能

二、使用上的具体区别,转的

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

ksh和bash区别的更多相关文章

  1. ksh与bash的异同

    (1) 在ksh是,数组的index只能从0到1023,而bash中没有这样的限制. (2) ksh与bash初始化数组的语法不同: 如下所示 icymoon# ksh icymoon# set -A ...

  2. #!/bin/sh & #!/bin/bash区别

    在shell脚本的开头往往有一句话来定义使用哪种sh解释器来解释脚本.目前研发送测的shell脚本中主要有以下两种方式:(1) #!/bin/sh(2) #!/bin/bash以上两种方式有什么区别? ...

  3. [转] #!/bin/sh & #!/bin/bash区别

    [From] http://blog.51cto.com/meiling/1826201 在shell脚本的开头往往有一句话来定义使用哪种sh解释器来解释脚本.目前研发送测的shell脚本中主要有以下 ...

  4. linux中查看现在使用的shell是ksh还是bash?以及怎样修改?

    查看系统支持的shell: cat  /etc/shells 查看现在使用的shell:  修改默认shell: 另外,修改了系统默认shell之后不会立即生效,之后再次登录系统修改的shell才会生 ...

  5. ash, bash, ksh, csh, zsh

    /bin/bash (就是 Linux 预设的 shell, 是现在很多Linux的发行版中默认的shell,综合了其他shell的很多优点.)/bin/ksh (Kornshell 由 AT& ...

  6. terminal(终端),shell,tty,console(控制台)区别

    原文地址  stackexchange:What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'con ...

  7. BASH 环境

    本节内容 1.  什么是shell 2.  命令的优先级 3.  元字符 4.  登录shell与非登录shell 一  什么是shell shell一般代表两个层面的意思,一个是命令解释器,如bas ...

  8. 终端、虚拟终端、shell、控制台、tty的区别

    终端与控制台的区别? 最近开始接触Linux,终端.虚拟终端.shell.控制台.tty等概念让我很混乱,有必要认识清楚. 今天看到有人问终端和控制台的区别,而且这个问题比较有普遍性,因此想抽出一点时 ...

  9. linux shell bash使用管道|和read结合时问题解决

    最近在将ksh转成bash运行的时候出现了问题.代码如下: echo $1 | sed 's/\..*$/''/' | read FILE_NAME 当使用ksh执行的时候没有问题,FILE_NAME ...

随机推荐

  1. JAVA学习资料整理

    今天偶然间发现之前一个群里发过的一篇关于JAVA学习资料的东西.本着服务大众的精神,搬来了博客园: <JAVA编程思想>第四版(英文原版) 下载地址:http://115.com/file ...

  2. 006.Compile方法

    Delphi procedure Compile; 类型:procedure 可见性:public 所在单元:System.RegularExpressionsCore 父类:TPerlRegEx 此 ...

  3. (转载)delphi 中如何调用sql 存储过程

    delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...

  4. Python设计模式——建造者模式

    需求,画人物,要求画一个人的头,左手,右手,左脚,右脚和身体,画一个瘦子,一个胖子 不使用设计模式 #encoding=utf-8 __author__ = 'kevinlu1010@qq.com' ...

  5. Sublime Text 3插件之Emmet:HTML/CSS代码快速编写神器

    一.快速编写HTML代码 1.  初始化 HTML文档需要包含一些固定的标签,比如<html>.<head>.<body>等,现在你只需要1秒钟就可以输入这些标签. ...

  6. TypeScript学习指南第二章--接口(Interface)

    接口(Interface) TypeScript的核心机制之一在于它的类型检查系统(type-checker)只关注一个变量的"模型(shape)" 稍后我们去了解这个所谓的形状是 ...

  7. mysql的错误:The server quit without updating PID file /usr/local/mysql/data/door.pid).

    mysql错误解决: 先 参考:http://www.jb51.net/article/48625.htm 参考第四条: mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打 ...

  8. java static 变量,和方法从属于类

    第36集 java static 变量,和方法从属于类 可以用类来直接调用static属性和方法 static方法不能调用非静态的属性和方法,反之可以 new产生的对象,不包括static 属性和方法

  9. 简单讨论数据类型(byte)强制转化后的数值变化规律

    package com.wangzhu.datatype; /** * Java基本数据类型练习 * * @ClassName: DataTypes * @Description: TODO * @a ...

  10. easyui源码翻译1.32--ComboGrid(数据表格下拉框)

    前言 扩展自$.fn.combo.defaults和$.fn.datagrid.defaults.使用$.fn.combogrid.defaults重写默认值对象.下载该插件翻译源码 数据表格下拉框结 ...