Anzeige:
Ergebnis 1 bis 7 von 7

Thema: bash, zip und dateiname mit leerzeichen

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.05.2007
    Beiträge
    13

    bash, zip und dateiname mit leerzeichen

    Hallo zusammen,

    hab ein Problem mit einem Bash Skript. Unzwar kann ich meine Variable $name nicht richtig an zip übergeben. Hab schon meine bei der Zuweisung der Variable mit " gearbeitet,aber ohne Erfolg. Hab auch schon im zip kommando "eingefügt auch ohne Erfolg. Find leider nichts im Netz was mir hilft. Hier mal mein Skript.

    Code:
    #!/bin/bash
    
    date=$(date +%d.%m.%Y)
    time=$(date +%H:%M:%S)
    name=$(basename $2)
    
    if [ -e "$2" ]; then
      if [ "$1" = "-r" ]; then
        echo "packe und lösche $2"
        zip -r /home/papierkorb/"$name".zip $2 && rm -Rf $2
        echo "$date - $time Entferne => $2" > /home/skripte/papierkorb.log
      elif [ "$1" = "-x" ]; then
        echo "papierkorb leeren"
        rm -Rf /home/papierkorb/*
      else
        echo "falsche Parameter"
      fi
    else
      echo "Datei oder Verzeichnis existiert nicht"
    fi
    Vieleicht hat auch jemand eine Idee wie ich mein Script optimiere.

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Bei $2 musst du auch " setzen.
    Ansonsten sollte es so gehen. Du musst natürlich beim Aufrufen des Scriptes bei den Parametern, die Leerzeichen enthalten, auch auf die " achten.

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.05.2007
    Beiträge
    13
    meinst du wo ich basename anwende? oder an welcher stelle. Ich krieg es immer noch nicht hin. Hab mal nur $2 bei basename von anführungszeichen eingeschlossen, aber es hilft nicht. es geht auch nicht wenn ich bei der eingabe des parameters einfach den dateinamen mit anführungszeichen schreibe.

    es kommt die fehlermeldung

    Code:
    	zip warning: name not matched: /home/b3nni/datei
    	zip warning: name not matched: name.avi
    
    zip error: Nothing to do! (try: zip -r /home/papierkorb/datei name.avi.zip

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zeile 5 und 10 (in 10 doppelt) meinte ich.
    Wie rufst du das Script denn auf? Schreib hier bitte ein Beispiel rein.

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.05.2007
    Beiträge
    13
    ich geb dann folgenden Befehl ein

    pako -r /home/Benutzer/"datei name.avi"


    pako steht für papierkorb

    ich werd das mit den Anführungszeichen morgen nochmal testen. muss ich in Zeile 10 den kompletten pfad in Anführungszeichen nehmen? Eigentlich müsste es ausreichen den Namen in Anführungszeichen zu setzen oder?

  6. #6
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Es reicht, den Teil mit Leerzeichen zu quoten.
    Code:
    name=$(basename "$2")
    ...
    zip -r /home/papierkorb/"$name".zip "$2" && rm -Rf "$2"

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.05.2007
    Beiträge
    13
    Super Danke es funktioniert.

    ich musste den Teil jetzt noch separat machen

    elif [ "$1" = "-x" ]; then
    echo "papierkorb leeren"
    rm -Rf /home/papierkorb/*
    und jetzt funktioniert das Skript
    Geändert von Same (17-07-2009 um 17:32 Uhr)

Lesezeichen

Berechtigungen

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