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反复计算
  • 相关阅读:
    vb动态创建控件
    100多个很有用的JavaScript函数以及基础写法汇总
    CodeFile与CodeBehind的区别
    asp.net防sql注入问题
    .NET创建目录和文件
    Asp.Net判断字符是否是数字
    Asp.Net随机中文汉字验证码
    禁用表单自动提示complete
    如何隐藏vs2005的起始页
    Asp.Net enableEventValidation
  • 原文地址:https://www.cnblogs.com/zmlctt/p/3721022.html
Copyright © 2011-2022 走看看