[英]Why ping unknown host is happening when inside a while loop?
我試圖從csv文件中獲取一列,並在while循環中ping每行,但是每次它只顯示ping:unknown host(網站)
#!/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
通過向IFS
添加\\r
,這使得外殼程序將DOS字符視為字段分隔符。 這意味着它不會成為ip
一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.