Bash 将变量转换为字符串匹配

Bash 将变量转换为字符串匹配,bash,Bash,我对这个脚本有问题 即使/etc/hosts中没有任何内容,输出也始终为“您的字符串已找到”。 你对如何解决这个问题有什么想法,或者甚至有可能做到这一点吗 任何反馈都将不胜感激。我开始学习bash,所以请随意批评我 多谢各位 #!/bin/bash google= dig +noall +answer www.google.com | awk '{ print $1, $NF }' hosts= cat /etc/hosts | grep "www.google.com"

我对这个脚本有问题

即使/etc/hosts中没有任何内容,输出也始终为“您的字符串已找到”。 你对如何解决这个问题有什么想法,或者甚至有可能做到这一点吗

任何反馈都将不胜感激。我开始学习bash,所以请随意批评我

多谢各位

#!/bin/bash

google= dig +noall +answer www.google.com | awk '{ print $1, $NF }' 
hosts= cat /etc/hosts | grep "www.google.com" 

if [ $google == $hosts ] ; then
    echo "Your string has been found"
else
    echo "Your string has not been found"
fi


您没有设置变量
google
hosts
;您缺少捕获两个管道输出的命令替换。此外,要将命令结果分配给变量,您需要
google
hosts
都是空的,并且您没有引用它们的扩展,因此您要测试的是
=
是否为非空字符串,就是这样。测试始终为真的原因很简单-两个字符串都为空,因此
[“$google”=“$hosts”]
始终为真。首先,您应该将命令替换与
$()
`
,:
google=$(dig+noall+answer www.google.com | awk'{print$1,$NF}')
hosts=$(cat/etc/hosts | grep“www.google.com”)
一起使用,中间没有空格,然后您就可以开始更进一步了。