2016-12-21 3 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 

이 내 두 번째 스크립트입니다

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

첫 번째에게 스크립트가 완벽하게 작동합니다. 난 그냥 "이 script2의 에코 보는 방법입니다

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

Script2 여러 오류가 나는 할 수 없습니다 거기에 내 손을 넣어.

을 나는 주요 오류가 "Snelheid"는 뜻과 연산 아무것도 할 수없는 생각의 속도.

사람이 무엇이 잘못되었는지 알아낼 수 있습니까?

+0

을 당신은 어디에서든지 $ fn' '의 값을 사용하지 않는 . 'Project2.txt'의 내용이 아닌, 그 3 가지 변수의 값을 설정하는 것이 좋습니다. – chepner

답변

1

두 번째 스크립트에서 다음과 같은 것을 원한다고 생각합니다. 내가 실제로 변경 한 유일한 것은 변수 DatumDag, DatumUurSnelheid을 설정하기 위해 Project2.txt의 내용이 아닌 Grafiek.txt의 줄을 구문 분석한다는 것입니다. (나는 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 ***** 
관련 문제