我想知道一种简洁的方法,我可以检查字符串是否存在于逗号分隔的字符串值中.例如:如果
x="abc,def,ghi"
y="abc"
Run Code Online (Sandbox Code Playgroud)
它应该返回true
而如果
y="ab"
Run Code Online (Sandbox Code Playgroud)
那么它应该返回false
你可以使用globs:
[[ ",$x," = *",$y,"* ]]
Run Code Online (Sandbox Code Playgroud)
使用bash的正则表达式匹配运算符=~:
[[ $x =~ (^|,)"$y"(,|$) ]]
Run Code Online (Sandbox Code Playgroud)
警告:虽然上述正则表达式恰好是便携式,通过支持正则表达式的特殊香味=~是与平台相关的,由于使用特定平台的正则表达式库.
举个例子:hek2mgl建议使用\b匹配字边界,这适用于Linux,但不适用于OSX.最接近的东西\b在POSIX是[[:<:]]和[[:>:]],但不幸的是,这些不工作在Linux上.