Anzeige:
Ergebnis 1 bis 6 von 6

Thema: bash-script Problem mit Leerzeichen

  1. #1
    Krischan
    Gast

    bash-script Problem mit Leerzeichen

    Hallo,

    ich nutze ein Script um einzelne VM´s meines ESXi-Servers zu sichern. Das ganze sieht verkürzt so aus:

    VM=$1
    SERVER=192.168.80.1
    USER=root
    PASS=geheim
    DSPATH=/vmfs/volumes/datastore1

    scp -r root@${server}:${DSPATH}/${VM} /home/backup

    Das ganze funktioniert so lange, bis z.B. VM nicht mehr "test" heißt sondern "test server"; sprich in VM ein Leerzeichen enthalten ist.

    Ohne Script ist das ganze kein Problem. Ein:

    scp -r root@192.168.80.1:'"/vmfs/volumes/datastore1/test server"' /home/backup

    funktioniert ohne Probleme. Im Script also mit:

    root@${server}:${DSPATH}/${VM}

    funktioniert es nicht mehr. Wer weiß Rat? Ich bin, was Linux und die bash angeht absoluter Newbie!

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Code:
    scp -r root@${server}:${DSPATH}/"\"${VM}\"" /home/backup

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.10.2002
    Ort
    Berlin
    Beiträge
    110
    Hallo

    Man könnte das Leerzeichen escapen.

    Code:
    VM=$1
    durch

    Code:
    VM=`echo $1 | sed 's/ /\\ /'`
    ersetzen.

    MfG
    Klaus Harrer

  4. #4
    Krischan
    Gast
    Zitat Zitat von BLUESCREEN3D Beitrag anzeigen
    Code:
    scp -r root@${server}:${DSPATH}/"\"${VM}\"" /home/backup
    Hallo,

    vielen Dank, das funktioniert Prima! Zwei Fragen hätte ich allerdings noch.

    1. Was bewirkt das "\" \"" genau?
    2. Was mache ich wenn im ${DSPATH} ebenfalls ein Leerzeichen enthalten ist?

    Code:
    "\"${DSPATH}/${VM}\""
    oder

    Code:
    "\"${DSPATH}\""/"\"${VM}\""

  5. #5
    Krischan
    Gast
    Zitat Zitat von klaus_harrer Beitrag anzeigen
    Hallo

    Man könnte das Leerzeichen escapen.

    Code:
    VM=$1
    durch

    Code:
    VM=`echo $1 | sed 's/ /\\ /'`
    ersetzen.

    MfG
    Klaus Harrer
    Hallo,

    das funktioniert leider gar nicht. scp sagt dann immer:

    scp: /vmfs/volumes/datastore1/WS: No such file or directory
    cp: Aufruf von stat für âTestâ nicht möglich: No such file or directory

  6. #6
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Zitat Zitat von Krischan Beitrag anzeigen
    Hallo,

    vielen Dank, das funktioniert Prima! Zwei Fragen hätte ich allerdings noch.

    1. Was bewirkt das "\" \"" genau?
    Mit dem Backslash entwertest du das nachfolgende Zeichen. Deine Argument lautet dann wörtlich (es wird so als String an scp übergeben)
    Code:
    root@toller_server:verzeichnis/"test mit leerzeichen"
    .
    2. Was mache ich wenn im ${DSPATH} ebenfalls ein Leerzeichen enthalten ist?

    Code:
    "\"${DSPATH}/${VM}\""
    oder

    Code:
    "\"${DSPATH}\""/"\"${VM}\""
    Die beiden Lösungen haben den gleichen Effekt.
    Geändert von ContainerDriver (11-12-2008 um 13:18 Uhr)
    Ein gebrechlich Wesen ist der X-Server.

Lesezeichen

Berechtigungen

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