Linux 对grep搜索运行变量字符串匹配?

Linux 对grep搜索运行变量字符串匹配?,linux,shell,grep,sh,Linux,Shell,Grep,Sh,我在这里定义了变量,以稍微缩短逻辑。wget工作正常(下载正确的文件),而tar.gz的grepping在wget.log中工作 问题是与另一个文件的匹配 基本上,如果它在黑名单上,我希望它跳过 var1=https://somewebsite.com/directory line1=directory sudo wget -O wget.log https://somewebsite.com/$line1/releases if grep -q "tar.gz" wget.log | "$

我在这里定义了变量,以稍微缩短逻辑。wget工作正常(下载正确的文件),而tar.gz的grepping在wget.log中工作

问题是与另一个文件的匹配

基本上,如果它在黑名单上,我希望它跳过

var1=https://somewebsite.com/directory
line1=directory

sudo wget -O wget.log https://somewebsite.com/$line1/releases

if grep -q "tar.gz" wget.log | "$var1" -ne grep -q 
"https://somewebsite.com/$line1" banned; then
    echo "Good Job!"
else
    echo "Skip!"
fi

使用
&&
测试
grep
命令是否都成功

if grep -q -F 'tar.gz' wget.log && grep -q -F -x "$variable" banned
then
    echo "Skip!"
else
    echo "Good Job!"
fi

我将
-F
选项用于
grep
,因为我们搜索的字符串都不是正则表达式,而是固定字符串。我在第二个
grep
中使用了
-x
来匹配黑名单中的整行。

您使用的是哪个shell
sh
通常指与POSIX兼容的shell,但是
bash
通常是Linux系统上的默认shell。我个人更喜欢鱼。不管怎样,它们在语法上都有所不同,哪怕只是一点点。此外,这一切都不取决于底层的操作系统,因此您应用的
linux
标记是错误的。
“$var1”-ne grep-q
应该是什么意思,为什么要将第一个
grep
的输出管道传输到它?
grep-q
不会产生任何输出,因此,将其输出通过管道传输到另一个命令是没有意义的。您可以包括
wget.log
禁用的
文件的示例吗?如果您的问题中包含了一个.wget.log,那么诊断和制定解决方案就会容易得多。它只是一个大的信息转储,搜索它以查看是否包含任何tar.gz文件,第二个文件“禁止”只是一个包含完整链接的文件,不应再次检查。对于不正确的标记也很抱歉:)仍在学习如何放置东西的定义。因此,这种语法是有效的,但tar.gz的目的只是一个通用搜索,而不是用作完整变量匹配,然而,第二个grep(反对禁止)确实是与另一个文件完全匹配的字符串。这就是为什么我没有在第一个
grep
中使用
-x
。我想我对条件if/then有点生疏了。所以tar文件应该是if/then中的第一个签入,然后需要禁止另一个签入。现在回显tarfile会让我胡言乱语(这是意料之中的,因为只有在转储文件中找到tar.gz时才会匹配),但如果我拒绝使用违禁文件,我想格式会有所不同。所以我想应该是,如果tar.gz在文件中匹配,并且$var1在banked中未找到,那么echo good job else,banked,fail fi?这就是我在构建语法时遇到的问题:)谢谢你的建议如果网站被禁止,你为什么还要做
wget
?我想我现在明白你想要什么了,我已经更新了答案。