2013-08-30 75 views
0
for ((x=1; $x<=300; x++)); do (ping world$x.runescape.com -n 20 | grep Minimum | grep -oP "(?<=Minimum =)[0-9]+(?=ms)" >> RuneScape_Ping_Output.txt); done 

这是干什么的ping world.runescape.com 20次,并寻找最小的ping并将其存储为其输出。它将按照指定的方式为world1.runescape.com一路做到world300.runescape.com。输出只是最小ping值的单个数字。添加带脚本输出的文本

我遇到的问题是我想要世界编号和它存储的输出。所以,当它ping通world1.runescape.com而不是只存储数字30(30是ms)时,我希望它显示World1,30。那么,如果它确实world233.runescape.com例如它会显示World233,55

有没有办法做到这一点?因为有时World122没有World123,所以除非我给每个ping添加了标签,否则World124会放在World123的位置,如果没有值返回123,它会给出错误的结果,所以我需要给它们加上标题以获取占位符。

回答

1

你想在输出的每一位之前回显。

for ((x=1; $x<=300; x++)); do 
    echo -n "world$x," 
    ping world$x.runescape.com -n 20 | grep Minimum | grep -oP "(?<=Minimum =)[0-9]+(?=ms)" 
done > RuneScape_Ping_Output.txt 

我已经移动了外部重定向,假设您不想累积结果,只需获取最新设置。

+0

这很好。我想用逗号分开它们的原因是,当我用excel打开它时,可以使用逗号分隔它们。我运行它时遇到的问题是,不返回任何值或找不到任何输出的ping会混乱。例如,如果ping超时,则无法找到修剪和输出的单词“minimum”。那么有没有办法返回0找不到输出的东西?会用一个“如果”或什么的? – Aaron

+1

添加'|| echo 0'到grep行。 –

+0

但是如果ping失败,它会说“请求超时”。那么补充一点,仍然做我正在尝试的?如果它根本无法ping通,我希望它显示0或任何我选择的ya知道 – Aaron