我有一个 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
正如评论中提到的,您不需要字符串的echo
and cat
to ,并且需要两个括号来进行这种类型的比较: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