在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