如何编写Bash脚本判断变量var内容是否匹配以ABC结尾的字符串?
在Bash中判断变量是否以ABC结尾的几种方法
嘿,刚好我经常处理这类Bash字符串匹配的需求,给你分享几个实用的方法:
方法1:使用正则表达式匹配(现代Bash推荐)
如果你的Bash版本是3.0及以上,用[[ ]]结合正则表达式是最灵活的方式,$符号表示匹配字符串的结尾:
#!/bin/bash var="XYZABC" # 可以替换成你实际的变量值 if [[ $var =~ ABC$ ]]; then echo "变量var的内容是以ABC结尾的!" else echo "变量var的内容不是以ABC结尾的。" fi
解释:=~是Bash里的正则匹配操作符,ABC$明确指定要匹配以ABC结尾的字符串。
方法2:使用case语句(兼容性拉满)
如果需要兼容一些老旧的shell环境,case语句是更稳妥的选择,它支持通配符匹配:
#!/bin/bash var="123ABC" case "$var" in *ABC) echo "变量var的内容是以ABC结尾的!" ;; *) echo "变量var的内容不是以ABC结尾的。" ;; esac
解释:*ABC里的*代表任意长度的任意字符(包括空字符),只要最后三位是ABC就会匹配成功。
方法3:使用通配符直接匹配(最简单直观)
如果只是单纯判断后缀,不需要复杂正则,直接用==结合通配符就行,写法更简洁:
#!/bin/bash var="TESTABC" if [[ $var == *ABC ]]; then echo "变量var的内容是以ABC结尾的!" else echo "变量var的内容不是以ABC结尾的。" fi
这个方法和正则的效果一样,但语法更简单,适合快速实现简单的后缀判断。
你可以根据自己的环境和需求选其中一种,亲测都能用哦!
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

