【问题标题】:Matching first substring within a variable in Bash在 Bash 中匹配变量中的第一个子字符串
【发布时间】:2018-09-05 19:11:24
【问题描述】:

我有 2 个变量 valuebackup 具有以下值:

value = 'abc'

backup = urls://string1abc.com, urls://string1cde.com, urls://string1efg.com, urls://string1abc.com

我想检查backup 变量中逗号前的first substring,然后用grep 查找$value,如果匹配则$test=PASS

在上面的示例中,$backupfirstlast 子字符串中包含abc。但是,我只想检查first substring,即urls://string1abc.com

我有以下命令,但它会检查 backup 中的所有子字符串

grep -qs $value $backup && test='PASS' || test='FAIL'

【问题讨论】:

    标签: linux bash sed grep rhel


    【解决方案1】:

    你可以使用parameter expansion:

    if [[ ${backup%%,*} = *"$value"* ]]; then 
        test=pass
    else
        test=fail
    fi
    

    【讨论】:

    • 即使$backupnull 它也会返回PASS 这是不正确的。
    • @meallhour 很难相信。你能发布失败的实际输入吗?
    • 我只是将backup 设置为empty 并尝试运行它
    • value=abc; backup="" 对我来说很好,输出fail。不适合你吗?见:ideone.com/dZjdwq
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 2014-08-04
    • 2018-12-19
    • 1970-01-01
    • 2020-06-18
    • 2014-08-28
    相关资源
    最近更新 更多