1

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

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

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

4

3 回答 3

2

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

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

于 2013-03-13T08:58:17.537 回答
2

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

${var%pattern}

?表示任何单个字符

于 2013-03-13T09:01:07.260 回答
1

第一:man 1 bash

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

仅删除“123”:

echo ${sample%123}
test

删除任何 3 个字符:

echo ${sample%???}
test

ETC

于 2013-03-13T08:57:39.760 回答