检查字符串是否包含整个子字符串

检查字符串是否包含整个子字符串

以两个变量为例:$a="bar/var1" 和 $b="var" 我想检查 $b 的内容是否在 $a 中,而不仅仅是 $b 的每个字符,而是它的确切内容。

我试过:

  • if [[ $a =~ .*$b*. ]]
  • if [[ "$a" =~ .*"$b"*. ]]
  • if [[ "$a" = *"$b"* ]]
  • if [[ "$a" = *$b* ]]
  • if [[ "$a" == *$b* ]]

但问题总是一样的,如果 $b 是“rav”或“var”,结果是相同的,但我只希望它为“var”时为真。

答案1

#!/bin/bash

a="bar/var1"
b="var"

if [[ "$a" == *"$b"* ]]; then
  echo "Got it"
fi

b="rav"

if [[ "$a" == *"$b"* ]]; then
  echo "Got it"
fi

您的尝试列表中包含以下内容:

if [[ "$a" = *"$b"* ]]

你走在正确的轨道上,但你需要两个 = 符号,而不是一个。

相关内容