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`
  • 相关阅读:
    React学习笔记
    士兵杀敌(一)
    网络爬虫Java实现抓取网页内容
    德莱联盟
    计算球体积
    在页面上 获取键盘事件
    一起玩转mysql
    腾讯云 做出的 不错的 动画 chrome小插件
    jquery MD5
    json to xml
  • 原文地址:https://www.cnblogs.com/always-fight/p/9044457.html
Copyright © 2011-2022 走看看