首页 > 解决方案 > bash 如果字符串不包含多个条目

问题描述

在 bash 中,我需要检查字符串是否不包含值列表。如果没有,则将其添加到数组中

if [[ $x != *"Tom"* ]] || [[ $x != *"Dick"* ]]  || [[ $x != *"Harry"* ]] || [[ $x != *"Bob"* ]]; then
    echo $x
    files_to_transfer+=( $x )
fi

如果它不包含 Tom、Dick、Harry 或 Bob,我需要将变量添加到数组中。

当我运行它时,每个文件都会添加到我的数组中,即使是文件名中包含 Tom、Dick、Harry 或 Bob 的文件。

标签: bash

解决方案


你需要

[[ $x != *Tom* && $x != *Dick* && $x != *Harry* && $x != *Bob* ]]

即,当它不包含它们时,您需要添加它,而不是如果它不包含它们之一。

此外,您可以在内部使用布尔运算符[[ ... ]];并且不需要双引号,因为它们没有特殊含义。


推荐阅读