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反复计算
  • 相关阅读:
    Redis入门
    k8s dubbo微服务之maven配置
    NoSQL发展历史与阿里巴巴架构演进分析
    k8s交付dubbo微服务之部署Jenkins
    k8s版本平滑升级
    读 <The Lost Horizon> 感
    luogu P1026 统计单词个数
    acm一些小细节/技巧
    数据结构与算法——常用高级数据结构及其Java实现
    数据结构与算法——常用排序算法及其Java实现
  • 原文地址:https://www.cnblogs.com/zmlctt/p/3721022.html
Copyright © 2011-2022 走看看