File einlesen

10/08/2011 - 08:56 von Volker Englisch | Report spam
Hallo,

nach der Migration auf ein neues System (mit neuerer Bash 4.1.9) habe
ich ein Problem mit einem Script, das auf dem alten System so
funktionierte. Die beiden relevanten Zeilen sind:

mysql -u $dbuser -p$password -e"select * from Adressen \
where Nr=\"$nummer\"" $db | tail -1 > "$tmpfile"

read nummer name strasse plzort gebdat tel fax mobil mail bem rest < $tmpfile

IFS beinhaltet nur den Tab.

Mein Problem: Wenn in der eingelesenen Zeile nicht alle Felder belegt
sind (also z.B. keine Faxnummer), wird das Feld nicht als leer
übernommen, sondern die folgenden Felder verschieben sich eins zurück.

$tmpfile ist korrekt, dort stehen bei leerem Fax-Feld nach "tel" zwei
Tabs. Irgendwie scheint read das aber nicht als leeres Feld zu
verstehen.

Beispiel für $tmpfile:
1<tab>Testmann<tab>Hauptstr.1<tab>90000 Irgendwo<tab>01.01.1900<tab>54321<tab><tab>0161-000000<tab>[...usw]

Wie bekomme ich read dazu, leere Felder zwischen zwei Tabs auch als leer
einzulesen?

TIA
Volker
 

Lesen sie die antworten

#1 Helmut
10/08/2011 - 09:08 | Warnen spam
Hallo, Volker,

Du meintest am 10.08.11:

read nummer name strasse plzort gebdat tel fax mobil mail bem rest <
$tmpfile

IFS beinhaltet nur den Tab.



[...]

Wie bekomme ich read dazu, leere Felder zwischen zwei Tabs auch als
leer einzulesen?



Ungetestet: "cut" sollte die Tabs als Feldtrenner verwerten. Also (ohne
"read):
fax=$(cut -f7 $tmpfile)

usw.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

Ähnliche fragen