我正在使用以下内容来确定Bash(版本3.2.25)shell脚本中$ mainString中是否存在任何子字符串:
if [[ $mainString = *cat* || $mainSubstring = *blue cheese* ]]; then
echo "FOUND"
else
echo "NOT FOUND"
fi
但由于“蓝芝士”的空间,我一直收到以下错误。你如何处理子字符串中的空格?
答案 0 :(得分:3)
你可以逃离这个空间:
$mainSubString = *blue\ cheese*
或引用非通配符部分,其中一个例子是
$mainSubString = *'blue cheese'*
通常,最好将模式存储在变量中,以简化引用并使[[...]]
表达式更简洁。请注意,您不能引用参数扩展,正如格伦杰克曼在评论中指出的那样。
pattern="*blue cheese*"
if [[ $mainString = *cat* || $mainSubstring = $pattern ]]; then