子字符串是 bash 脚本以正确匹配

子字符串是 bash 脚本以正确匹配

我有一个 bash 脚本,其中包含一个文件名和一个文件中包含的字符串,我想将文件中的子字符串与文件名(tar.gz)进行比较,看看它们是否匹配。

substr=$(echo "$(cat /home/user/configrc | grep Version)" | cut -d '_' -f4-5)
xfile="/home/user/data_1806_01.tar.gz"
echo $substr
echo $xfile
echo "Is $substr in $xfile"

if [ "$xfile" == *"$substr"* ]; then echo "Match"; else echo "No Match"; fi

输出如下

DD_DATA_AB_1806_01
1806_01
/home/user/data_1806_01.tar.gz
 in /home/user/data_1806_01.tar.gz
No Match

我无法获得匹配,1806_01 应该在 DD_DATA_AB_1806_01 中具有子字符串匹配。另外奇怪的是,行 - echo "Is $substr in $xfile" 没有正确打印 - "Is $substr" 或 "Is 1806_01" 丢失

在 substr 的末尾是否需要某种终止?

文件 configrc 包含行 Version=DD_DATA_AB_1806_01

我在网上看了很多例子,但看不出我做错了什么......这么简单的问题......

非常感谢 :)

森托斯 7.2

答案1

正如评论中提到的,您不需要字符串的echoand catto ,并且需要两个括号来进行这种类型的比较:grep

substr=$(grep 'Version' /home/user/configrc | cut -d '_' -f4-5)
xfile="/home/user/data_1806_01.tar.gz"

if [[ "$xfile" == *"$substr"* ]]; then
  echo "Match"
else
  echo "No Match"
fi

相关内容