我正在尝试读取文件servers.txt并ping其中的每一行。 它包含每行的服务器。
#!/bin/bash
clear
output="pingtest.txt"
for line in < cat "servers.txt"
do
ping $line >> "$output" 2>&1
done
但是脚本根本不起作用,因为&#39;&lt;&#39;在第4行。 我做错了什么?
答案 0 :(得分:3)
for循环遍历基本上位置参数。它不从标准输入读取。 read
从标准输入读取。
你想要
while read line; do
…
done < "servers.txt"
这是the very first BASH FAQ。
答案 1 :(得分:0)
如果您想坚持使用for循环,可以试试这个:
#!/bin/bash
clear
output="pingtest.txt"
for line in `cat servers.txt`
do
ping -c 1 -W 1 ${line} >> ${output} 2>&1
done
此外,您还需要为ping命令提供计数和超时。
c:您要ping服务器的次数
W:等待服务器响应的时间