我想知道一种简洁的方法,我可以检查字符串是否以逗号分隔的字符串值存在。例如: 如果
x="abc,def,ghi"
y="abc"
它应该返回true
和 如果
y="ab"
那么它应该返回false
答案 0 :(得分:8)
你可以使用globs:
[[ ",$x," = *",$y,"* ]]
答案 1 :(得分:5)
使用bash的regular-expression-matching operator, =~
:
[[ $x =~ (^|,)"$y"(,|$) ]]
警告:虽然上述正则表达式恰好是可移植的,但=~
支持的正则表达式的特殊风格是依赖于平台的,因为使用了给定平台的正则表达式库。
一个例子:hek2mgl建议使用\b
来匹配单词边界,这些单词边界适用于Linux,但不适用于OSX。 POSIX中最接近\b
的内容是[[:<:]]
和[[:>:]]
,但不幸的是,这些内容在Linux上无效。