Ich habe eine Datei (unter extrahieren)lesen Datei in Array, wenn die Variable Null ist nicht Ausgangsleitung
1468929555,4, 0.0000, 999999.0000, 0.0000,0,0,0,0,0
1468929555,5, 0.4810, 0.0080, 67.0200,0,4204,0,0,0
1468929555,6, 0.1290, 0.0120, 0.4100,0,16,0,0,0
1468929555,7, 0.0000, 999999.0000, 0.0000,0,0,0,0,0
Ich möchte in dieser Datei und geben die Ergebnisse auf eine andere Datei zu lesen, zu ändern Unix Zeit menschlich lesbar - aber ich möchte nur tun, wenn Feld 7 besetzt ist.
#!/bin/bash
file="monitor_a.log"
host=`hostname`
while IFS=, read -r f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
do
mod_time=`date -d @$f1 +"%d/%m/%y %H:%M:%S"`
if [[$f7=="0"]];
then
done <"$file"
fi
echo "$mod_time,300 ,$host, Apache-a, $f2 , $f5 , $f4 , $f3 , $f7 , $f8 , $f9 ,$f6, $f10" >> mod_monitor_a.log
done <"$file"
Das Problem liegt in meiner if-Anweisung, erhalte ich die Fehler
./monitor_convert.sh: line 12: syntax error near unexpected token `done'
./monitor_convert.sh: line 12: ` done <"$file"'
Mein Denken in der if-Anweisung ist, dass, wenn Feld7 = 0 die zum Lesen der Datei in einem Array zurück, das done < "$ Datei" -Bit. Das ist offensichtlich falsch, aber ich kann nicht arbeiten, wie man diese Linie verfehlt.
Danke.
Das Einfügen des Skripts in http://www.shellcheck.net/ zeigt das Problem: "Wenn [[$ f7 ==" 0 "]]" falsch ist, benötigen Sie Leerzeichen um die Klammern. – fedorqui