在 Bash 中查找变量内的字符串

在 Bash 中查找变量内的字符串

我在 bash 中有以下内容:

string="/opt/directory/"

然后当我执行以下操作时:

if [[ $string != *"directory"* ]]

它解释为目录不在字符串内。为什么?我该如何解决这个问题?

编辑:

我对此感到非常愚蠢,实际上我对我的脚本做了一些更改,使用了其中一个正斜杠,大约一个小时后我都无法弄清楚哪里出了问题,在你们其中一个人提到它应该像这样工作后,我意识到这是因为在中间的某个地方我将变量重新分配给了其他东西,这就是它没有选择它的原因。

也许我会删除这个问题,因为这确实是我的错,而且我觉得它不会给任何人带来太多帮助!

答案1

看起来运行正常。如果我尝试这样做:

string="/opt/directory/"

if [[ $string != *"directory"* ]]; then
    echo "true"
else
    echo "false"
fi

然后它正确地报告false。换句话说,问题“$string 不是包含*"directory"*“ 是错误的, 作为$string 包含*"directory"*


也许你想问的是“ $string包含*"directory"*“,在这种情况下你必须使用:

if [[ $string == *"directory"* ]]

(请注意使用==而不是!=。)

答案2

使用:

string="/opt/directory/"
if [[ $string != *directory* ]]; then
    echo "not found"
else
    echo "found"
fi

相关内容