[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [bash] Einlesen einer Datei



Thilo Engelbracht wrote:
> Leider funktioniert Dein Lösungsvorschlag nicht...
> 
> Ich habe, wie Du geschrieben hast, die Zeilen
> 
>      exec < $1
>      while [ -z "$quota" ]
> 
> durch
> 
>      egrep -v '(^$|^#)' $1 | while [ -z "$quota" ]
>
> ausgetauscht.
> 
> Mein Problem habe ich aber so ähnlich gelöst:
> 
>    #!/bin/bash
>    if [ -f $1 -a -r $1 ]
>    then
>       grep -E -v '(^$|^#)' $1 > /tmp/benutzer-info
>       quota=""
>       exec < /tmp/benutzer-info

Ja das hatte ich zuerst überlegt, ich versuche aber das anlegen von tmp
Dateien möglichst zu vermeiden, da man unheimlich aufpassen muss das man
sich keine Sicherheitslöcher einbaut, grade wenn du Passwörter ins tmp
legst musst du natürlich sicher gehen das die Dateien nur für das script
lesbar sind (auch nicht für Sekundenbruchteile für andere). Ach solltest
du auf vorhandensein prüfen und und und...

> Trotzdem würde mich mal interessieren, WARUM Dein Vorschlag nicht
> funktioniert. Denn meine Lösung mit der temporären Datei finde ich nicht
> gerade optimal. Deine Lösung gefällt mir deutlich besser!

natürlich wäre es hier wichtig zu wissen *was* nicht funktioniert. Kommt
eine Fehlermeldung? Funktioniert das egrep -v '(^$|^#)' schon nicht wie
gewünscht? werden die Zeilen nicht an die while Schleife übergeben? ...

Also ich hab es getestet auf nem woody System mit der grep Paketversion
2.4.2-3 und bash Version 2.05a-11

zum testen hab ich die von dir angegebenen Beispiele Verwendet und auch
am script keine weitere Änderung vorgenommen (habe auch grade nochmal
getestet aber es macht natürlich keinen Unterschied ob while wie bei dir
in der Zeile mit egrep steht oder wie bei mir drunter "|" sorgt dafür
das in der nächsten Zeile gesucht wird).

Nicolas



Reply to: