gpt4 book ai didi

linux - 为什么在 while 循环内发生 ping 未知主机?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:42 24 4
gpt4 key购买 nike

我正在尝试从 csv 文件中获取一列并在 while 循环中 ping 每一行但每次它只显示 ping:unknown host (website)

#!/bin/bash
while IFS=, read num ip; do
echo $num
ping -c 10 $ip
done <site.csv

csv文件的格式是

1, facebook.com
2, google.com

结果永远是

ping: unknown host facebook.com
ping: unknown host google.com

但是当我直接ping网站时,它确实可以正常工作,所以我认为不是网络问题

-bash-4.1$ ping -c 2 facebook.com
PING facebook.com (173.252.120.6) 56(84) bytes of data.
64 bytes from edge-star-shv-12-frc3.facebook.com (173.252.120.6): icmp_seq=1 ttl=70 time=94.1 ms
64 bytes from edge-star-shv-12-frc3.facebook.com (173.252.120.6): icmp_seq=2 ttl=70 time=93.8 ms

--- facebook.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1094ms
rtt min/avg/max/mdev = 93.882/94.040/94.199/0.345 ms

是 while 循环还是从 csv 中读取列导致了问题?

有没有办法使用 wile 循环从 csv 文件中读取站点并 ping 它?

最佳答案

根据 Glenn Jackman 关于问题出在 DOS 行尾的建议,这里有一个简单的方法来确保它们已从输入中删除。替换:

while IFS=, read num ip; do

与:

while IFS=$',\r' read num ip; do

通过将 \r 添加到 IFS,这使得 shell 将 DOS 字符视为字段分隔符。这意味着它不会成为 ip 的一部分。

关于linux - 为什么在 while 循环内发生 ping 未知主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com