欢迎各位兄弟 发布技术文章
这里的技术是共享的
在Linux Shell中,%
和?
字符可以用于字符串截取时的模式匹配:
%
(百分号):
例如:${SOME_STRING%pattern}
会删除 $SOME_STRING
最后部分与 pattern
相匹配的字符。
实际应用中,如果不需要知道确切的模式,而是想删除末尾的一个字符,可以这样用:${SOME_STRING%?}
。这将会去掉字符串$SOME_STRING
的最后一个字符。
当与${}
结合使用进行参数扩展时,%
用于从变量的结尾去除匹配的部分。
%%
:
类似地,双百分号%%
会移除结尾与模式最匹配的整个字符串。
?
(问号):
在某些上下文中(如正则表达式或文件名通配符),单个?
表示匹配任意一个字符。
但在${}
扩展语法中,它通常与%
一起用来作为特殊字符来匹配单个任意字符,尤其是在截取字符串时指代末尾的一个字符,如上述例子所示。
总结一下,在Shell字符串操作中:
${SOME_STRING%?}
将截掉变量SOME_STRING
最后的一个字符。
举个例子:
Bash1SOME_STRING="example_string" 2echo "${SOME_STRING%?}"
执行上述命令后,输出将是example_strin
,即原字符串去掉了最后一个字符的结果。