我正在尝试ping IP地址并存储发送到IP地址的5个(例如)数据包的平均往返时间。数据包的数量值存储为变量,而IP地址来自文件。这是我的代码
for line in $(ls -1 "$file");
do
avg=$(ping -c $COUNT $line | awk '/avg/ {split($0,arr,"/"); print arr[5]}')
echo "$avg"
done
当我在终端中运行ping命令并添加数据包计数和IP地址时,该命令可以工作并返回该值,但是当我尝试运行该文件时,它将返回错误消息“ ping:file:名称暂时失败”解析度”。关于为什么发生这种情况的任何想法。
你正在遍历文件名;没有与服务器名称相对应的IP地址file
。
你不应该一开始就使用for
循环,并且绝对不要在脚本中使用ls
任何循环,当然,你还希望避免无用echo
的循环。
while IFS= read -r line; do
ping -c "$COUNT" "$line" | awk '/avg/ {split($0,arr,"/"); print arr[5]}'
done<"$file"
展望未来,在寻求人工帮助之前,请尝试http://shellcheck.net/并阅读你收到的错误消息。