用于 %?在unix中

时间:2013-03-13 08:47:53

标签: unix

我是unix的新手,有人可以告诉我'%'的目的吗?在以下命令中:

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

我可以看到它删除了最后一个字符,但我可以删除任意数量的字符,例如3个字符等。

3 个答案:

答案 0 :(得分:2)

它是一个模式匹配运算符,意思是“如果模式匹配变量值的末尾,则删除匹配的最短部分并返回其余部分”。由于?匹配“任何单个字符”,因此将删除最后一个字符。

因此,如果要删除三个字符,则需要将?替换为与三个字符匹配的表达式而不是一个字符。

答案 1 :(得分:2)

%是从最短后方删除的bash参数替换运算符

${var%pattern}

?表示任何单个字符

答案 2 :(得分:1)

第一: 男人1 bash

语法:$ {varname%word}其中word是“匹配后缀模式”,因此您可以:

仅删除“123”:

echo ${sample%123}
test

删除任意3个字符:

echo ${sample%???}
test