欢迎各位兄弟 发布技术文章
这里的技术是共享的
在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,即原字符串去掉了最后一个字符的结果。