一个Bash脚本,用于检查字符串是否存在于逗号分隔的字符串列表中

时间:2015-03-27 12:34:52

标签: bash shell

我想知道一种简洁的方法,我可以检查字符串是否以逗号分隔的字符串值存在。例如: 如果

x="abc,def,ghi"
y="abc"

它应该返回true

和 如果

y="ab"

那么它应该返回false

2 个答案:

答案 0 :(得分:8)

你可以使用globs:

[[ ",$x," = *",$y,"* ]]

答案 1 :(得分:5)

使用bash的regular-expression-matching operator, =~

[[ $x =~ (^|,)"$y"(,|$) ]]

警告:虽然上述正则表达式恰好是可移植的,但=~支持的正则表达式的特殊风格是依赖于平台的,因为使用了给定平台的正则表达式库。

一个例子:hek2mgl建议使用\b来匹配单词边界,这些单词边界适用于Linux,但不适用于OSX。 POSIX中最接近\b的内容是[[:<:]][[:>:]],但不幸的是,这些内容在Linux上无效。