2013-03-13 48 views
1

我是unix的新手,有人可以告訴我'%?'的目的嗎?在下面的命令:使用%?在unix

-bash-3.2$ sample=test123 
-bash-3.2$ sample=${sample%?} 
-bash-3.2$ echo $sample 
test12 

我可以看到它被移除的最後一個字符,但我想我可以刪除儘可能多的字符,例如3個本地字符等

回答

2

這是一個模式匹配運算,意思是「如果該圖案的變量的值的末端相匹配,刪除匹配的最短部分和退還其餘「。由於?匹配「任何單個字符」,最後一個字符將被刪除。

所以,如果你想刪除三個字符,你需要用一個匹配三個字符而不是一個字符的表達式替換?

1

第一: 人1 bash的

語法:$ {VARNAME%詞},其中詞是 「匹配後綴模式」,讓您可以:

只刪除 「123」:

echo ${sample%123} 
test 

除去任何3個字符:

echo ${sample%???} 
test 

+0

感謝您的快速響應很多安德魯。 – Chaitanya 2013-03-13 09:19:01

2

%是bash的參數替換操作符從最短後除去

${var%pattern} 

?指任何單個字符

+0

謝謝Kugathsan。 – Chaitanya 2013-03-13 09:18:39

+0

@ user2065083::) – 2013-03-13 09:38:31