zoukankan      html  css  js  c++  java
  • 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反复计算
    
  • 相关阅读:
    vim删除操作
    kubectl命令自动补全
    kubelet资源限制
    一道c语言运算符优先级问题
    c语言自加自减三道题
    C语言操作符优先级
    [word]2010中插入公式自动编号并且公式不自动缩小/变小
    [matlab]改变矩阵的大小并保存到txt文件
    dxut.h(29): fatal error C1083: Cannot open include file: 'dxsdkver.h': No such file or directory
    [vim]的关键字补全
  • 原文地址:https://www.cnblogs.com/cizao/p/11750301.html
Copyright © 2011-2022 走看看