3

我正在使用以下内容来确定 Bash(版本 3.2.25)shell 脚本中的 $mainString 中是否存在任一子字符串:

if [[ $mainString = *cat* || $mainSubstring = *blue cheese* ]]; then
    echo "FOUND"
else
    echo "NOT FOUND"
fi

但是由于“蓝纹奶酪”中的空格,我不断收到以下错误。你如何处理子字符串中的空格?

4

1 回答 1

3

您可以逃离空间:

$mainSubString = *blue\ cheese*

或引用非通配符部分,其中一个例子是

$mainSubString = *'blue cheese'*

通常,最好将模式存储在变量中,以简化引用并使[[...]]表达式更简洁。请注意,您不能引用参数扩展,正如 glenn jackman 在他的评论中指出的那样。

pattern="*blue cheese*"
if [[ $mainString = *cat* || $mainSubstring = $pattern ]]; then
于 2013-06-13T21:00:04.040 回答