2013-03-13 19 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