如何在POSIX Shell脚本的if语句中检测含polybar标签的字符串中的emoji
解决Shell正则检测含Polybar格式标签的Emoji失效问题
你的问题出在正则表达式写得不对:原来的\.☁是在匹配点号+☁的组合,但实际emoji变量里的内容是%{F#1a88a4}☁%{F-},根本没有点号,所以匹配自然失败。
给你两种解决写法:
- 最简写法:直接检测字符串中是否包含☁字符,不需要多余的正则符号:
if [[ "$emoji" =~ ☁ ]]; then ((timeShow = time - modValue)) fi
- 精准匹配写法:如果要严格对应Polybar格式标签包裹的☁,可以用正则匹配完整的标签结构:
if [[ "$emoji" =~ %\{F[^\}]+\}☁%\{F-\} ]]; then ((timeShow = time - modValue)) fi
这个正则会匹配%{F+任意颜色代码}☁%{F-}的格式,避免误匹配其他场景的☁。
补充:Bash里用=~做正则匹配时,右侧的正则无需加引号(除非有空格等特殊字符),直接写目标规则即可。
内容的提问来源于stack exchange,提问作者twelfth
相关产品推荐
相关产品推荐

