jens4ever
Goto Top

Linux: Prüfen, ob Zeile 1 aus Datei A in Datei B enthalten ist und wenn nicht, dann Skript ausführen

Hallo zusammen!

Ich habe gerade etwas mit dem Raspberry gebastelt.

Er lädt den Spiegel RSS feed herunter, bereinigt ihn, sodass nur die neuste Schlagzeile übrig bleibt. (Datei: /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt)

Mit einem Skript, dass mittels Google eine akustische Ausgabe erbringt, werden die News vorgelesen, das Ganze nur zwischen 10 Uhr bis 21:30 Uhr. Läuft.

Jetzt will ich noch erzielen, dass eine News immer nur einmal vorgelesen wird, statt alle 10 min. (So häufig läuft das Skript)

Meine Idee war nun, dass ich mit einem Befehl prüfe, ob die News bereits in einer 2. Datei (/home/pi/autowallpaper/dateien/spiegel.de/spiegel-vorgelesen.txt) enthalten ist. Wenn NICHT führe das Skript (Datei: /home/pi/autowallpaper/skripte/news2speech/child-news2speech.sh) aus, dass 1. das Sprach-Skript in Verbindung mit der News-Datei /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt ausführt und dann also vorliest und 2. die News aus spiegel-txt2speech-2.txt in spiegel-vorgelesen.txt einträgt, damit sie beim nächsten Vorgang nicht vorgelesen wird.

Folgenden Code habe ich zusammen gebastelt. Jedoch funktioniert nicht das Prüfen, ob die News aus spiegel-txt2speech-2.txt bereits in spiegel-vorgelesen.txt vorhanden ist.

Mein Code:
if ! grep -q "cat /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt" "/home/pi/autowallpaper/dateien/spiegel.de/spiegel-vorgelesen.txt"; then  
/home/pi/autowallpaper/skripte/news2speech/child-news2speech.sh
fi

Die spiegel-vorgelesen.txt würde ich nachts einmal säubern lassen.

Danke für eure Hilfe.
Jensen

Content-ID: 278074

Url: https://administrator.de/contentid/278074

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

Epixc0re
Epixc0re 22.07.2015 um 22:07:37 Uhr
Goto Top
Hi Jensen,

bitteschön:

if [ "$(grep $(head /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt -n 1) /home/pi/autowallpaper/dateien/spiegel.de/spiegel-vorgelesen.txt  -c)" = "0" ]; then  
        /home/pi/autowallpaper/skripte/news2speech/child-news2speech.sh
fi

lG,
Stefan
Jens4ever
Jens4ever 24.07.2015 aktualisiert um 21:52:03 Uhr
Goto Top
Moin! Vielen Dank Stefan.

Ich habe es eingefügt bekomme jedoch statt des gewünschten Ergebnisses folgendes:

root@RAS:~# /home/pi/autowallpaper/skripte/news2speech/main
grep: ist: Datei oder Verzeichnis nicht gefunden
grep: der: Datei oder Verzeichnis nicht gefunden
grep: erste: Datei oder Verzeichnis nicht gefunden
grep: Test: Datei oder Verzeichnis nicht gefunden

Hast du eine Idee? Ich habe es bereits mit Anführungszeichen und eckigen Klammern versucht.

Danke vorab!
Grüße,
Jensen

PS: Hier zur Sicherheit einmal der Inhalt beider Dateien.

Der Cronjob ruft das Skript main auf.

Datei main
# RSS auf eine Zeile minimieren
sed '/^$/d' /home/pi/autowallpaper/dateien/spiegel.de/spiegel2.txt > /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-1.txt  
sed '2,99d' /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-1.txt > /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt  

if [ "$(grep $(head /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt -n 1) /home/pi/autowallpaper/dateien/spiegel.de/spiegel-vorgelesen.txt  -c)" = "0" ]; then  
        /home/pi/autowallpaper/skripte/news2speech/child-news2speech.sh
fi

Datei child
/home/pi/autowallpaper/skripte/text2speech "$(</home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt)"  

head -1 /home/pi/autowallpaper/dateien/spiegel.de/spiegel-txt2speech-2.txt | cat - /home/pi/autowallpaper/dateien/spiegel.de/spiegel-vorgelesen.txt >/tmp/tmpfile && mv /tmp/tmpfile /home/pi/autowallpaper/dateien/spiegel.de/spiegel-vorgelesen.txt