Linux 在ubuntu上运行bash主机脚本时出现问题

Linux 在ubuntu上运行bash主机脚本时出现问题,linux,bash,shell,scripting,Linux,Bash,Shell,Scripting,我的同事编写了一个脚本来显示我们网络中我需要记下的IP地址的主机名。问题是,我已经确认该脚本在CentOS上运行没有问题。我现在无法访问不受限制的CentOS设备,所以我只能使用命令行Ubuntu和沙盒。出于某种原因,同样的脚本不起作用,想知道是否有人能给我指出正确的方向 以下是脚本: #!/bin/sh ipranges=" 173.225.176 127.0.0 " for r in $ipranges; do for i in `seq 1 255`; do

我的同事编写了一个脚本来显示我们网络中我需要记下的IP地址的主机名。问题是,我已经确认该脚本在CentOS上运行没有问题。我现在无法访问不受限制的CentOS设备,所以我只能使用命令行Ubuntu和沙盒。出于某种原因,同样的脚本不起作用,想知道是否有人能给我指出正确的方向

以下是脚本:

#!/bin/sh

ipranges="
173.225.176

127.0.0
"

for r in $ipranges; do
    for i in `seq 1 255`; do
        host $r.$i|grep -vi 'not found'
    done
done
我还尝试将shebang行更改为/bin/bash,但没有成功。我目前在使用Ubuntu时遇到的错误如下:

输出:

$ sh script.sh

socket.cL1915: internal_send: 0.0.0.1#53: invalid argument

如果有人需要知道这一点,我们可以记下向ARIN提交报告时使用的IP,以防需要了解。谢谢任何人能为我提供的帮助

我认为问题在于ipranges变量中的空行。表达式host$r.$i似乎扩展为host.1,您的主机实现似乎将其解释为0.0.0.1。不幸的是,我无法在我的盒子上复制这一点,但这似乎是一个合理的解释


试着省略空行,或者更好:将所有IP地址都写在一行中,或者更好:使用一个适当的,但是你应该明确地使用/bin/bash作为shebang。

如果有人想知道问题是,虽然单引号可以工作,但似乎真正需要的是反勾号。我在这里遵循了本文的建议:


基本上,将我的for语句中的单引号替换为反勾号,效果很好。谢谢所有那些试图帮助你的人

你在试用什么版本的Ubuntu?我无法用Unbuntu 11.04、Unbuntu 14.04和RHEL 6重现错误。是的,我使用的是:Ubuntu 3.13.0-35-generic,Distrib relase=14.04.Hm,你知道我可以在哪里注册并运行这个脚本吗?如果没有,我会试试你的建议或者另一个盒子。没有,对不起。你试过按照我的建议重写剧本吗?