Shell中 ##%% 操作变量名

在linxu平台下少不了对变量名的处理,今天记录下shell中 ##%% 对变量名的操作。

#操作左侧,%操作右侧。

#号处理方式:

对于单个#,处理对象为变量中指定的第一个符号左侧字符串,

对于两个##,处理对象为变量中指定的最后一个符号左侧字符串。

%号处理方式:

对于单个%,操作对象是变量中指定的最后一个符号右侧字符串,

对于两个%%,处理对象为变量中指定的第一个符号右侧字符串。

示例:

直接描述太过抽象了,我们结合实际例子再看下具体用法。

  1 fq=/pub/data/groupA/ANI/F19/01.fq/HNX0023_1.fq.gz
  2 
  3 
  4 echo "原始字符串fq: $fq"    返回原始字符串	/pub/data/groupA/ANI/F19/01.fq/HNX0023_1.fq.gz
  5 
  6 
  7 echo "#号处理"
  8 
  9 echo ${fq#/}	删除第一个字符“/”	pub/data/groupA/ANI/F19/01.fq/HNX0023_1.fq.gz
 10 echo ${fq##*_}	删除最后一个字符“_”及其左侧的字符	1.fq.gz     
 11 echo ${fq##*/}	删除最后一个字符“/”及其左侧的字符	HNX0023_1.fq.gz
 12 
 13 
 14 echo "*号处理"
 15 
 16 echo ${fq%_*}	删除最后一个字符“_”及其右侧的字符串	/pub/data/groupA/ANI/F19/01.fq/HNX0023
 17 echo ${fq%%_*}	删除第一个字符“_”及其右侧的字符串	/pub/data/groupA/ANI/F19/01.fq/HNX0023
 18 echo ${fq%%/*}	删除第一个字符“/”及其右侧的字符串	整个字符串被删除,返回空行
 19 echo ${fq%/*}	删除最后一个字符“/”及其右侧的字符串	/pub/data/groupA/ANI/F19/01.fq
 20 echo ${fq%_*}2.fq.gz    删除最后一个字符“_”及其右侧的字符串,连接新字符    /pub/data/groupA/ANI/F19/01.fq/HNX0023_2.fq.gz
posted @ 2019-12-02 11:23  天使不设防  阅读(2148)  评论(0编辑  收藏  举报