标题似乎有点不清楚。
这是我的第一个脚本:
#!/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”它意味着速度。
有人可以弄清楚出了什么问题吗?
答案 0 :(得分:1)
我认为你的第二个脚本需要类似下面的东西。我唯一真正改变的是你解析Grafiek.txt
中的一行,而不是Project2.txt
的内容,来设置变量DatumDag
,DatumUur
和Snelheid
。 (请参阅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 *****