bash 如果算术运算符无效
bash if invalid arithmetic operator
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."".
这个脚本的目的= 'get output.txt (list of domains)' 'then dig +short NS $domains' 然后检查它是否在我的首选名称服务器 $Value1,2,3 if true=如果 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 行上做错了什么?
提前致谢
您正在将字符串与数值进行比较。以下 if
条件中的语法是比较两个数值而不是字符串比较。此外,您的 if
条件未以 ]]
正确结束。我认为您正在将字符串与数值进行比较。请查看以下正确的 if
条件:-
如果左右手的值都是数字,首先是一个正确的 if 条件:-
if [[ ( $nameserver -eq $value1 ) || ( $nameserver -eq $value2 ) ]]
正确的字符串比较:-
if [[ ( "$nameserver" == "$value1" ) || ( "$nameserver" == "$value2" ) ]]
希望对您有所帮助。
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."".
这个脚本的目的= 'get output.txt (list of domains)' 'then dig +short NS $domains' 然后检查它是否在我的首选名称服务器 $Value1,2,3 if true=如果 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 行上做错了什么?
提前致谢
您正在将字符串与数值进行比较。以下 if
条件中的语法是比较两个数值而不是字符串比较。此外,您的 if
条件未以 ]]
正确结束。我认为您正在将字符串与数值进行比较。请查看以下正确的 if
条件:-
如果左右手的值都是数字,首先是一个正确的 if 条件:-
if [[ ( $nameserver -eq $value1 ) || ( $nameserver -eq $value2 ) ]]
正确的字符串比较:-
if [[ ( "$nameserver" == "$value1" ) || ( "$nameserver" == "$value2" ) ]]
希望对您有所帮助。