Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Bash: Ganze Datei in Variable speichern?

  1. #1
    Registrierter Bürger
    Registriert seit
    Dec 2006
    Beiträge
    221

    Bash: Ganze Datei in Variable speichern?

    Ahoi!

    Ich würde gern eine ganze Text-Datei in einer Bash-Variable speichern, damit ich die in dem betreffenden Script nicht jedes Mal neu einlesen muss. Gibt es eine Möglichgkeit das zu tun, ohne, dass die Zeilenumbrüche verlorengehen?

  2. #2
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Code:
    #!/bin/bash
    
    VAR="$(cat datei.txt)"
    echo "Zweite Zeile von datei.txt:"
    echo "$VAR" | sed -n '2p'
    Arch Linux / Intel Z77 / i5-3570K / 8GB PC3-1333 / SAMSUNG SSD 830 128GB

  3. #3
    Registrierter Bürger
    Registriert seit
    Dec 2006
    Beiträge
    221
    Funktioniert bei mir nicht. Die Datei wird von vornherein als Einzeiler in der Variable gespeichert.

    a.k.a.:
    Code:
    # VAR=$(cat file)
    # echo $VAR | grep -c .
    1
    Geändert von DerAufgeklUser (06.06.08 um 14:40 Uhr)

  4. #4
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Code:
    # VAR=$(cat file)
    # echo "$VAR" | grep -c .
    103
    Arch Linux / Intel Z77 / i5-3570K / 8GB PC3-1333 / SAMSUNG SSD 830 128GB

  5. #5
    Registrierter Bürger
    Registriert seit
    Dec 2006
    Beiträge
    221
    Öhm... okeh. Was machst du anders? Die Befehle sind die selben und meine Testdatei hat definitv mehrere Zeilen.

    Code:
    # bash --version
    GNU bash, version 3.1.17(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2005 Free Software Foundation, Inc.
    Debian Etch

    Code:
    # echo $VAR | hexdump
    0000000 7365 6220 6665 6e69 6564 206e 6973 6863
    0000010 6d20 6865 6572 6572 7a20 6965 656c 206e
    0000020 6e69 6420 6569 6573 2072 6164 6574 0a69
    0000030
    # hexdump file
    0000000 7365 620a 6665 6e69 6564 206e 6973 6863
    0000010 6d0a 6865 6572 6572 7a0a 6965 656c 0a6e
    0000020 6e69 6420 6569 6573 0a72 6164 6574 0a69
    0000030
    Geändert von DerAufgeklUser (06.06.08 um 15:15 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    Apr 2007
    Beiträge
    121
    Die Befehle sind nicht exakt gleich. Sieh mal die zweite Zeile genauer an..

  7. #7
    Registrierter Bürger
    Registriert seit
    Dec 2006
    Beiträge
    221
    Aha, so funktionierts bei mir auch. Oder wenn ich IFS wieder auf " " setze. Den hatte ich auf "
    ". Merkwürdig.

    Danke!

  8. #8
    Linux Freak (SuSE&RedHat) Avatar von ViennaAustria
    Registriert seit
    May 2005
    Ort
    Wien
    Beiträge
    71
    Wenn Du in der Bash keine Anführungszeichen verwendest, wird der String als Wordlist interpretiert. Damit wird jeglicher White Space (Leerzeichen, Tabulator und sogar Linefeeds - genaueres in Variable IFS) weggenommen und bei der Ausgabe nur durch ein Blank zwischen den Worten ersetzt. Damit werden auch führende Leerzeichen entfernt.

    Für das Filehandling ist das im Allgemeinen praktisch, beim Stringhandling muss man halt darauf aufpassen, immer Anführungszeichen zu verwenden.

    Einfaches Beispiel:
    Code:
    > echo "das  ist    ein      test"
    das  ist    ein      test
    
    > echo  das  ist    ein      test
    das ist ein test
    Thomas

Ähnliche Themen

  1. X-Fi Treiber installation unter Suse 10.3
    Von DevilX im Forum Musik
    Antworten: 11
    Letzter Beitrag: 22.10.07, 22:00
  2. enlightenment 17 install script
    Von bert2002 im Forum Neue Programme/Versionen
    Antworten: 97
    Letzter Beitrag: 20.04.07, 08:15
  3. WLAN RTL8180 unter Kubuntu
    Von srvguy im Forum Anbindung an die Aussenwelt
    Antworten: 103
    Letzter Beitrag: 19.02.06, 18:51
  4. Problem mit alsa bei der SDL-Compilierung!
    Von -Hendrik- im Forum Musik
    Antworten: 4
    Letzter Beitrag: 20.08.02, 20:10
  5. Probleme mit kwintv--Hilfeeeeeeee.....
    Von Hubidubi2001 im Forum Fernsehen
    Antworten: 10
    Letzter Beitrag: 20.05.02, 19:50

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •