使用awk的脚本中出现未知错误

时间:2016-12-21 21:06:51

标签: linux bash file charts scripting

标题似乎有点不清楚。

这是我的第一个脚本:

#!/bin/bash

read $1
tijd=$(($minuten*60))
echo "Het script zal elke" '$1' "minuten de tijd naar buiten printen "
echo "De resultaten worden in het bestand ''Grafiek.txt'' geplaatst, activeer ''script2.sh'' om de grafiek te creeren. "

while true; do

    Datum=$(date "+%x %H:%M")
    Snelheid=$(speedtest |grep -oP '^Download: \K.*')

    sleep $tijd

    echo "$Datum $Snelheid" >> Grafiek.txt

done

这就是Grafiek文件的内容:

21/12/16 18:50 355.44 Mbits/s 
21/12/16 18:52 161.59 Mbits/s 
21/12/16 18:54 101.52 Mbits/s

这是我的第二个剧本:

#!/bin/bash

for fn in `cat Grafiek.txt`; do

DatumDag="$(awk 'BEGIN{FS=" "}{print $1}' Grafiek.txt)"
DatumUur="$(awk 'BEGIN{FS=" "}{print $2}' Grafiek.txt)"
Snelheid="$(awk 'BEGIN{FS=" "}{print $3}' Grafiek.txt)"

IntSnelheid=${Snelheid%[.]*}
Aantalsterretjes=$(($IntSnelheid/20))
Grafiek=" "

for ((i=0; i<$Aantalsterretjes+1; i++))
    do
    Grafiek="$Grafiek*"
done

echo "DatumDag DatumUur Grafiek"
done

第一个脚本完美无缺。我只想获得下载速度并打印出名为“grafiek

的”图表

这就是script2的回声应该是这样的:

 21/12/16 18:50 355.44 Mbits/s *******
 21/12/16 18:52 161.59 Mbits/s ****
 21/12/16 18:54 101.52 Mbits/s **

Script2有多个错误,我无法抓住它。

我认为主要的错误是无法做任何算术与“Snelheid”它意味着速度。

有人可以弄清楚出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

我认为你的第二个脚本需要类似下面的东西。我唯一真正改变的是你解析Grafiek.txt中的一行,而不是Project2.txt的内容,来设置变量DatumDagDatumUurSnelheid。 (请参阅Bash FAQ 001,了解我使用for循环替换while循环的原因。)

while read -r DatumDag DatumUur Snelheid units; do

  IntSnelheid=${Snelheid%.*}
  Aantalsterretjes=$(($IntSnelheid/20))

  Grafiek=" "
  for ((i=0; i<$Aantalsterretjes+1; i++)); do
    Grafiek="$Grafiek*"
  done

  echo "$DatumDag $DatumUur $Snelheid $units $Grafiek"

done < Grafiek.txt

答案 1 :(得分:0)

#!/bin/bash
while read -r line; do
    speed=${line%.*}
    speed=${speed##* }
    speed=$(printf %$((speed/20))s)
    echo "$line ${speed// /*}"
done < Grafiek.txt

...运行

$ ./a.sh                                               
21/12/16 18:50 355.44 Mbits/s *****************
21/12/16 18:52 161.59 Mbits/s ********
21/12/16 18:54 101.52 Mbits/s *****