【问题标题】:Handling Spaces In Substring Searches In Bash Shell Scripts在 Bash Shell 脚本中处理子字符串搜索中的空格
【发布时间】:2013-06-10 10:05:20
【问题描述】:

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

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

但由于“blue cheese”中的空格,我不断收到以下错误。如何处理子字符串中的空格?

【问题讨论】:

    标签: bash shell substring


    【解决方案1】:

    你可以逃离空间:

    $mainSubString = *blue\ cheese*
    

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

    $mainSubString = *'blue cheese'*
    

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

    pattern="*blue cheese*"
    if [[ $mainString = *cat* || $mainSubstring = $pattern ]]; then
    

    【讨论】:

    • +1。如果将模式放在变量中,则不能引用变量:[[ $mainSubstring = "$pattern" ]] 返回 false。
    猜你喜欢
    • 2013-09-25
    • 2011-01-20
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多