Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Shellscriptfehler

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.08.2003
    Beiträge
    15

    Shellscriptfehler

    Greez @ all,

    Diese Thema betrifft nur die Scripter unter euch,kuckt euch mal das script an und sagt mir bitte wo der Fehler liegt, wenn ich nen alias auf [rm] im Unix setzte und ne Datei lösche ist sie weg, bei einem ordner bring er mir trotzt [rm -r] dass ich die option -r benutzen soll!!!

    !HELP!

    #!/bin/ksh

    # Papierkorb
    # Features:
    # Alias fuer 'rm' oder 'del'
    # Verschiebt Datei in Papierkorb
    # Innerhalb des Papierkorbs wird richtig geloescht
    # Mit Versionskontrolle

    # $papierkorb und $papierkorblog muessen schreibbar fuer alle sein.

    trashdir=/.trash
    trashlog=/.trash/Trash.log # Logging endgueltig entfernte Dateien
    pwddir=$PWD
    datum=`date +'%y/%m/%d %H:%M'´

    # Optionen
    # --------
    if [[ "$1" == "-r" ]] ; then
    recursive="yes"
    shift
    fi

    # Hauptteil
    # ---------

    for file in $*
    do
    # Ziel Directory bestimmen
    # ------------------------
    reldir=`dirname $file`
    name=`basename $file`
    case "$reldir" in
    /*) directory=$reldir ;;
    .) directory=$pwddir ;;
    *) directory=$pwddir/$reldir
    esac

    # Zur Sicherheit: Verzeichnis nur mittels -r loeschbar
    # ----------------------------------------------------
    if [ -d $file ] && [ "$recursiv" != "yes" ] ; then
    echo "$file ist ein Verzeichnis. Verwenden sie rm -r."
    continue
    fi

    # Verschieben oder Loeschen
    # -------------------------
    if [[ `cd $directory 2>/dev/null; pwd` != $trashdir* ]]
    then
    # 2 Versionen erhalten
    if [ -e $trashdir/$directory/$name ]; then
    /bin/rm -r $trashdir/$directory/$name.1 2>/dev/null
    mv $trashdir/$directory/$name $trashdir/$directory/$name.1
    fi
    # In den Papierkorb verschieben
    # -----------------------------
    mkdir -p $trashdir/$directory 2>/dev/null
    mv $file $trashdir/$directory
    else
    # Richtiges Loeschen im Papierkorb
    # --------------------------------
    if [ -d $file ]
    then /bin/rm -r $file
    else /bin/rm $file
    fi
    echo "$file entfernt $datum" >> $trashlog
    fi
    done

  2. #2
    Registrierter Benutzer
    Registriert seit
    29.12.2001
    Ort
    Berlin
    Beiträge
    231
    Versuch mal
    Code:
    ....
    if [ -d $file -a -z "$recursiv" ] ; then
    ...
    fi
    ...
    -a == Logische UND Verknüpfung
    -z == wahr, wenn String leer ist

    T;o)MEs
    ************************************************
    Man(n oder Frau) muss nicht alles wissen,
    Man(n oder Frau) muss nur wissen wo es steht !
    ************************************************
    http://www.sandtom.net
    ICQ 176436259

Lesezeichen

Berechtigungen

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