bash如果算术运算符无效

时间:2018-03-09 09:41:04

标签: bash shell dig

value1=ns1.abc.nl.
value2=ns2.abc.nl.
value3=ns3.abc.nl.

for domains in $(cat /home/carlito/Desktop/output.txt)
           do
for nameserver in $(dig +short NS $domains)

           do
                        if [[ ( $nameserver -eq $value1 ) || ( $nameserver -eq $value2 ) || ( $nameserve$
                     then
                echo "$domains Namserver is local" >>/home/carlito/Desktop/resultaat.txt
                break


                else

                echo "$domains namserver IS NOT local" >>/home/carlito/Desktop/resultaat.txt


fi

           done
done

所以我在脚本的IF行遇到问题错误消息=“ nszero1.axc.nl。:语法错误:算术运算符无效(错误标记为”.axc.nl。“”。

此脚本的目的= '获取output.txt(域列表)''然后挖掘+短NS $域'然后检查它是否在我的首选名称服务器$ Value1,2,3 if true = good if false = bad

我已经尝试了类似的事情:

value="ns1.abc.nl./ns2.abc.nl/ns3.abc.nl."

for domains in $(cat /home/carlito/Desktop/output.txt)
           do
            if dig +short NS $domains == $value
                then

                echo "$domains is LOCAL"

                else

                echo"$domains Is NOT LOCAL"

          fi
done

但是这样做的是如果domain.nl = ns1.abc.nl./ns2.abc.nl它仍然是echo:是非LOCAL。但我希望脚本能够Echo = true,如果它至少有一个值。

有人可以指出我正确的方向,我应该使用哪种功能,以及我对if行做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

您正在将字符串与数值进行比较。以下if条件中的语法是比较两个数值而不是字符串比较。您的if条件也未使用]]正确结束。我想你将字符串与数值进行比较。请参阅以下正确的if条件: -

如果右手和左手值均为数字,则首先是正确的if条件: -

if [[ ( $nameserver -eq $value1 ) || ( $nameserver -eq $value2 ) ]]

正确的字符串比较: -

if [[ ( "$nameserver" == "$value1" ) || ( "$nameserver" == "$value2" ) ]]

希望这会对你有所帮助。