【问题标题】:Bash scripting linux: Lay-out and output of a scriptBash scripting linux:脚本的布局和输出
【发布时间】:2017-04-26 18:54:08
【问题描述】:

我想在 linux 中编写一个 bash 脚本,显示我的互联网在某个日期时间 + 天的下载速度,然后是下载速度。

信息必须存储在同一行的文件中,我想要第二个脚本以如下所示的“图形”显示速度:

24/11/2016 12:01 ********** 5.2MB/s 
24/11/2016 12:03 *******    3.5MB/s 
24/11/2016 12:05 ********   3.9MB/s

我正在使用 speedtest-cli -simple,这个命令显示我的下载和上传速度。

现在这是我的第一个脚本:

 while true; do 
     date “´%x %X” >> Test.txt 
     speedtest-cli –simple >Speedtest.txt 
     sed '2!d' speedtest.txt >> Test.txt 
     rm Speedtest.txt 
     sleep 20 
 done

现在我希望它运行,直到我决定停止脚本。但我的问题是日期和下载速度没有存储在同一行。 (我也想不出只输出下载速度,所以我使用 sed'2!d' 删除下载行输出并将其放入主文件中,尽管它会显示为“下载:2.1MB /s")

日期显示是正确的,图形稍后会出现问题,但我想知道如何将命令的输出放在一起,如果我知道我会找到一种方法来显示日期,然后是图形和下载速度在同一条线上。

【问题讨论】:

    标签: linux bash sed command-line-interface


    【解决方案1】:

    不使用任何临时文件:

    while sleep 20;do
       echo $(date "+%x %X") $(speedtest-cli --simple|grep ^Download) >> Test.txt
    done
    

    【讨论】:

    • 你应该把一些东西用单引号和双引号括起来:printf '%s %s\n' "$(date "+%x %X")" "$(speedtest-cli --simple | grep '^Download')"
    • 谢谢!但我还是有问题。我希望它只显示下载速度。当我使用 echo $(speedtest |grep ^Download 时,它显示:“Download: 52.2 Mb/s”有没有办法只显示速度?因为我需要这个“我将在第二个中创建的图形的参数脚本
    • grep -oP '^Download: \K.*'
    【解决方案2】:

    (来自this question)您可以简单地使用echo -n <text> 来消除末尾的换行符。例如,这样做:

    echo -n `date "+%x %X"` >> Test.txt 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      相关资源
      最近更新 更多