shell关于变量的操作

Posted 1直在路上1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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`

 

以上是关于shell关于变量的操作的主要内容,如果未能解决你的问题,请参考以下文章

Bash的变量类型

append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]

Linux bash基础特性二

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

来谈谈关于Shell中效率的问题

Shell编程入门