Einzelnen Beitrag anzeigen
Alt 18.12.2017, 08:27   #1
Smart_at_99
Jr. Member
 
Registriert seit: 11.03.2002
Beiträge: 60


Standard Shell Script - while do done wird ignoriert wenn $LINE keinen Wert hat

Guten Morgen,

ich habe ein Problem mit meinem Script und konnte bis dato noch keine Lösung finden und daher hoffe ich auf das Forum.

Folgendes zum Script:
Ich wechsel in ein bestimmtes Verzeichnis um dort nach *.zip Files zu suchen, wobei ich ein grep (gesucht wird nach einem DatumsString) auf das Ergebnis mache. Der Output wird dann Zeile für Zeile eingelesen und das File wird kopiert.

Die Suche mittels grep ergibt folgendes Ergebnis.
./1000000081/20171215T202111100/FB7C1501.zip
./1000000080/20171215T201931100/FB7C1501.zip
./1000000090/20171215T210643100/FB7C1501.zip

Die Ziele im Script sieht wie folgt aus.
#!/bin/sh
....
cd $DEFBKPDIR
find . -name "*.zip" | grep $CURDATE | while read LINE
do
...
done

Mein Problem:
Wenn das grep Kommando keinen Treffer landet, bleibt die Variable LINE leer - daher habe ich nach dem "do" den Wert der Variablen abgefragt, um nachher entsprechend vorzugehen zB.:
if [ TEST$LINE = TEST ]
if [ $LINE = $'\n' ]
if [ -z "$LINE" ]
if [ "$LINE" == "" ]
...
Es dauerte eine zeitlang herauszufinden, dass der "while do done" Teil komplett ignoriert wird, wenn das grep keinen Treffer landet.

Was mache ich falsch, oder wie kann man die Suche anders anlegen, sodass man einen brauchbaren Wert erhält.
Hat hier jemand eine andere Lösung oder Vorschlag.
Danke.
____________________________________
Das Leben ist zu kurz
Smart_at_99 ist offline   Mit Zitat antworten