zoukankan      html  css  js  c++  java
  • shell关于变量的操作

    一、变量和:-连用

    bin=`dirname "${BASH_SOURCE-$0}"`
    bin=`cd "$bin"; pwd`
    
    DEFAULT_LIBEXEC_DIR="$bin"/../libexec
    LIBEXEC_DIR=''#变量set了,但是是空值
    LIBEXEC_DIR=${LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
    echo $LIBEXEC_DIR

     $ {PARAMETER:-WORD}

     $ {PARAMETER-WORD}

     If the parameter PARAMETER is unset (never was defined) or null (empty), this one expands to WORD, otherwise it expands to the value of PARAMETER.

     If you omit the : (colon), like shown in the second form, the default value is only used when the parameter was unset, not when it was empty.针对第二种情况,PARAMETER变量未set,才使用WORD值

    二、变量和##或者%%连用的作用

     有一变量foldername=569_20180118150257,如果想获取_前的569或者后面的20180118150257,该如何操作呢?

    foldername=569_20180118150257
     
    echo ${foldername##*_}
    #返回20180118150257
    #等价与
    echo ${foldername##569_}
     
    echo ${foldername%%_*}
    #返回569
    #等价与echo ${foldername%%_20180118150257}

     从上可以看出##或者%%与变量连用是要删除匹配的部分,##是从开始匹配569_,并删除569_,%%是从后面匹配_*,并删除_*

     注意,两个##或者%%表示的是最长匹配,与#或者%区别看下面的例子:

    filename="sequencing.fq.gz"
    echo ${filename##*.}#返回gz
    echo ${filename#*.}#返回fq.gz
     
    echo ${filename%%.*}#返回sequencing
    echo ${filename%.*}#返回sequencing.fq
    

    三、Bash脚本获取自身路径方法

    bin=`dirname "${BASH_SOURCE[0]}"` #脚本相对于当前目录的路径,是相对路径
    bin=`cd "$bin"; pwd`
  • 相关阅读:
    android_SurfaceView 画图
    android_activity_研究(二)
    android_sdcard读写(一)
    双缓冲的小程序
    C++运算符重载小程序
    再练
    菜鸟的第一个博客(用java写的个小文本框)
    LUCENE第一个小程序(有错)
    蜗牛在奔跑
    指定目录下的java文件存储到一个Txt文本文件中
  • 原文地址:https://www.cnblogs.com/always-fight/p/9044457.html
Copyright © 2011-2022 走看看