"Temporary failure in name resolution" ping ubuntu shell 脚本错误

"Temporary failure in name resolution" error on ping ubuntu shell scripting

我正在尝试 ping 一个 IP 地址并存储发送到一个 IP 地址的 5 个(例如)数据包的平均往返时间。数据包的数量值存储为变量,IP 地址来自文件。这是我的代码

for line in $(ls -1 "$file"); 
do
    avg=$(ping -c $COUNT $line | awk '/avg/ {split([=13=],arr,"/"); print arr[5]}')
    echo "$avg"
done

当我在终端中 运行 ping 命令并添加数据包计数和 IP 地址时,该命令有效并且 returns 值,但是当我尝试 运行文件,它 returns 错误消息“ping:文件:名称解析暂时失败”。关于为什么会发生这种情况的任何想法。

您正在遍历文件名;没有与服务器名称 file.

对应的 IP 地址

You should not use a for loop in the first place and absolutely not using ls for anything in scripts and of course you will also want to avoid the useless echo.

while IFS= read -r line; do
    ping -c "$COUNT" "$line" | awk '/avg/ {split([=10=],arr,"/"); print arr[5]}'
done<"$file"

接下来,请先尝试http://shellcheck.net/,然后再寻求人工帮助,并阅读收到的错误消息。