Moin moin,
ich arbeite an einem Bash-Skript. Das soll im Arbeitsverzeichnis eine Datei einlesen, die aus Konfiguration (als Bash-Code, der bestimmte Umgebungsvariablen setzt) und aus einem Datenbereich besteht.
Den Konfigurationsteil möchte ich per source-Befehl einlesen, aber irgendwie muss ich die Bash davon abhalten, auch den Datenbereich einzulesen. (Dessen Struktur sei dahingestellt, es ist auf jeden Fall kein Bash-Skript.)
Wie mache ich das am besten? Ich hatte probiert, den Konfigurationsbereich mit "exit 0" zu beenden, aber das beendet nicht nur `source`, sondern gleich das ganze Skript. `man bashbuiltins` weist mich auf keine entsprechenden Steuerungsbefehle hin. Gibt es noch eine elegantere Möglichkeit, als die Datei von Hand an einer Trennmarkierung zu zerschneiden?
Gruß Stefan
On Wed, February 3, 2010 16:34, Stefan Majewsky wrote:
Wie mache ich das am besten? Ich hatte probiert, den Konfigurationsbereich mit "exit 0" zu beenden, aber das beendet nicht nur `source`, sondern gleich das ganze Skript. `man bashbuiltins` weist mich auf keine entsprechenden Steuerungsbefehle hin. Gibt es noch eine elegantere Möglichkeit, als die Datei von Hand an einer Trennmarkierung zu zerschneiden?
Lass die Bash-Datei die Befehle nicht ausfuehren sondern per echo ausgeben. Beispiel:
--daten.sh-- echo export MEINEVAR=xyz echo echo Hallo Welt! exit 0 Datenkram-der-Fehler-erzeugt... ----
Dann kannst Du so aufrufen: --call.sh-- eval `sh daten.sh` echo Jetzt ist MEINEVAR=$MEINEVAR ----
Konrad
PS.: nur so als Idee, ich habe es nicht getestet.
tipp: Den Datenbereich nach /dev/null kopieren:
cat >/dev/null <<. <datenbereich> .
Gruß Jörg
Am 03.02.2010 16:34, schrieb Stefan Majewsky:
Moin moin,
ich arbeite an einem Bash-Skript. Das soll im Arbeitsverzeichnis eine Datei einlesen, die aus Konfiguration (als Bash-Code, der bestimmte Umgebungsvariablen setzt) und aus einem Datenbereich besteht.
Den Konfigurationsteil möchte ich per source-Befehl einlesen, aber irgendwie muss ich die Bash davon abhalten, auch den Datenbereich einzulesen. (Dessen Struktur sei dahingestellt, es ist auf jeden Fall kein Bash-Skript.)
Wie mache ich das am besten? Ich hatte probiert, den Konfigurationsbereich mit "exit 0" zu beenden, aber das beendet nicht nur `source`, sondern gleich das ganze Skript. `man bashbuiltins` weist mich auf keine entsprechenden Steuerungsbefehle hin. Gibt es noch eine elegantere Möglichkeit, als die Datei von Hand an einer Trennmarkierung zu zerschneiden?
Gruß Stefan
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Moin,
danke für alle Antworten.
Am Mittwoch, 3. Februar 2010 19:35:36 schrieb Torsten Werner:
du kannst
true <<.EOF
als Trenner verwenden.
Mal wieder ein neues Bash-Feature entdeckt. Ich verwende jetzt
cat>&42<<.EOF
als Trenner, und rufe das ganze auf mit
source $INPUT 42>$OUTPUT.dat 2>/dev/null
Damit habe ich gleich meine Daten extrahiert, und die stderr-Umleitung unterdrückt die Fehlermeldung wegen des unbeendeten Heredocs.
Gruß Stefan
lug-dd@mailman.schlittermann.de