zoukankan      html  css  js  c++  java
  • ksh和bash区别

    一、实践证明,在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反复计算
  • 相关阅读:
    23种设计模式之外观模式
    HashMap系列之底层数据结构
    HashMap系列之基本概念
    轻松搞定荷兰国旗问题
    服务治理:Spring Cloud Eureka
    Spring Cloud简介
    简单了解什么是微服务架构
    字符串和时间
    调用shell命令
    s3操作
  • 原文地址:https://www.cnblogs.com/zmlctt/p/3721022.html
Copyright © 2011-2022 走看看