【问题标题】:bash if invalid arithmetic operatorbash 如果算术运算符无效
【发布时间】:2018-08-17 20:21:14
【问题描述】:
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.: syntax error: invalid algorithm operator (error token is ".axc.nl." em>”。

此脚本的目的= 'get output.txt (list of domain)' 'then dig +short NS $domains' 然后检查它是否在我的首选名称服务器 $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 它仍然会回显:不是本地的。但如果脚本至少有 1 个值,我希望脚本为 Echo=true。

有人可以指出我应该使用哪个函数以及我在 if 行中做错了什么吗?

提前致谢

【问题讨论】:

    标签: bash shell dig


    【解决方案1】:

    您正在将字符串与数值进行比较。下面if 条件中的语法是比较两个数值而不是字符串比较。此外,您的if 条件未以]] 正确结束。我认为您正在将字符串与数值进行比较。请参阅下面正确的if 条件:-

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

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

    对于正确的字符串比较:-

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

    希望这会对你有所帮助。

    【讨论】:

    • @Mrc,谢谢,祝你一切顺利。
    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2019-04-30
    • 2020-10-05
    相关资源
    最近更新 更多