2016-12-21 15 views
0

タイトルが不明瞭に見えるかもしれません。awkを使用したスクリプトで不明なエラーが発生しました

これが私の最初のスクリプトです:

#!/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 

これは私の2番目のスクリプトです:

#!/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 

最初にスクリプトは完璧に動作します。私は、「これはスクリプト2のエコーがどのように見えるべきかである

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 ** 

スクリプト2は、複数のエラーを持っており、私はできませんそれを私の手を置く。

を私は、主なエラーは「Snelheid」は、それが意味を持つ算術何もできないと思いスピード。

誰が悪いのかを把握することはできますか?

+0

あなたはどこでも、 '$ fn'の値を使用していません。 'Project2.txt'の内容ではなく、その3つの変数の値を設定したいと思うようです。 – chepner

答えて

1

2番目のスクリプトでは、次のようなものが欲しいと思います。私が実際に変更したのは、Project2.txtの内容ではなく、の行を解析し、変数をDatumDag,DatumUur、およびSnelheidに設定することだけです。 (私はwhileループを使用してforループを置き換える理由Bash FAQ 001を参照してください。)

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 
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 ***** 
関連する問題