for schleife für eine Zeile

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Mister-XY, 22.04.2016.

  1. #1 Mister-XY, 22.04.2016
    Mister-XY

    Mister-XY Grünschnabel

    Dabei seit:
    22.04.2016
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo, ich bin neu hier in diesem Forum.
    Evtl. kann mir ja einer von euch bei meinem Problem helfen.
    Ich möchte für ein entpackprogramm eine Ausschlusszeile erstellen.
    Und zwar sieht die aktuelle Zeile folgendermassen aus
    Code:
    unrar x -p"$password" -x'*.jpg' -x'*.db' -x'*.sfv' -x'*.nfo' "$filename"
    nun möchte ich aber, dass die Zeile so aussieht.
    Code:
    unrar x -p"$password" $wof "$filename"
    und habe mir gedacht, ich nutze dazu die for schleife.
    Das Problem daran ist, dass sie immer nur eine Sache nach dem andere abarbeitet.
    Code:
    for list in jpg db sfv nfo
    do
    LISTE="-x*.$list"
    done
    Am ende sollte es ja irgendwie dann so aussehen
    Code:
    wol=$LISTE + $LISTE + $LISTE +$LISTE ....
    und nicht
    Liste="-x*.jpg"
    Liste="-x*.db"
    Liste="-x*.sfv"
    Liste="-x*.nfo"
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    Code:
    LISTE="$LISTE -x*.$list";
     
    Mister-XY gefällt das.
  4. #3 Mister-XY, 22.04.2016
    Mister-XY

    Mister-XY Grünschnabel

    Dabei seit:
    22.04.2016
    Beiträge:
    5
    Zustimmungen:
    0
    Ich danke dir, nun habe ich nur noch das Problem, dass dann das erste Zeichen eine leerteichen ist.
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    wieso ist das ein Problem?

    Du kannst den String aber ja auch anders zusammenbauen - also erst der neue Wert, dann der bestende String.
     
  6. #5 Mister-XY, 22.04.2016
    Mister-XY

    Mister-XY Grünschnabel

    Dabei seit:
    22.04.2016
    Beiträge:
    5
    Zustimmungen:
    0
    Danke habe es getestet. Habe spasseshalber mal nur mein Script genommen und ein Leerzeichen hinter
    Code:
    LISTE="-x*.$list "
    gemacht und siehe da, die Zeile wurde nicht angenommen.
     
  7. #6 Mister-XY, 24.04.2016
    Mister-XY

    Mister-XY Grünschnabel

    Dabei seit:
    22.04.2016
    Beiträge:
    5
    Zustimmungen:
    0
    Das Problem ist einfach dieses Leerzeichen. Deswegen nimmt er dieses Symbol bzw. diese Endung nicht.
    Es müsste also so sein, dass hinter
    Code:
    -x*.$list
    schluss ist. Scheinbar aber bezieht er das Leerzeichen mit ein und dadurch gibt es halt diesen Fehler, dass er die Variable dadurch nicht annimmt.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    ich kann das Problem nicht nachvollziehen - hier tut's.

    Poste also bitte mal dein komplettes Script.
     
  10. #8 Mister-XY, 24.04.2016
    Mister-XY

    Mister-XY Grünschnabel

    Dabei seit:
    22.04.2016
    Beiträge:
    5
    Zustimmungen:
    0
    Ok
    Code:
    #!/bin/sh
    SCRIPTORDNER="/opt/app/unrar"       #Wo sollen die Passwörter und die Logdatein gespeichert werden
    PASSWORT=${SCRIPTORDNER}/passwort     #Hier angeben wo die Passwörter gespeichert werden sollen
    LOGFILE=${SCRIPTORDNER}/Logdatei.log   #Hier angeben wo die Logdatei gespeichert werden soll
    CLEAN=1                   #Sollen die RAR Archive nach dem Entpacken gelöscht werden 0=Nein 1=J
    AUSLIST="jpg db nfo"           #Dateien vom Entpacken ausschließen
    
    
    ###Ab hier nichts mehr ändern
    #############################
    
    DIR="$3"
    COUNT=0
    export LC_CTYPE="en_US.UTF-8"
    export LANG="en_US.UTF-8"
    export LC_COLLATE="C"
    
    
    ##### Verzeichnis check und Passwortabfrage
    ###########################################
    
    if [ ! -d $SCRIPTORDNER ]; then
       /bin/mkdir -p $SCRIPTORDNER
    fi
    
    if [ ! -f $PASSWORT ]; then
       /bin/touch $PASSWORT
    fi
    
    if [ ! -f $LOGFILE ]; then
       /bin/touch $LOGFILE
    fi
    
    if [ "$4" != "" ]; then
       if [ `grep -Fwc "$4" $PASSWORT` -eq 0 ]; then
         echo -e "$4" >> $PASSWORT
       fi
    fi
    
    ##### Dateien vom Entpacken ausschließen
    ########################################
    
    if [ "$AUSLIST" != "" ]; then
       for LIST in $AUSLIST
       do
         LISTE="-x*.$LIST $LISTE";
        done
       echo "$LISTE" >> $LOGFILE
    fi
    
    ##### Entpacken
    ###############
    
    if [ -d "$DIR" ]; then
      echo "`date`" "Entpacke Archiv  \"${DIR}\"" >>$LOGFILE
    else
      message error "`date`" "Verzeichnis \"${DIR}\" nicht vorhanden!" >>$LOGFILE
      exit 1;
    fi
    
    IFS_TEMP=$IFS
    IFS=$(echo -en "\n\b")
    
    for file in $(find "$DIR" -iname '*.rar'); do
      let COUNT=COUNT+1
      filename=`basename "$file"`
      dirname=`dirname "$file"`
    
      sfilename="${filename%.rar}"
    
      cd "$dirname"
    
    while true; do read password || break
    if [ `unrar x -p"$password" "$LISTE" "$filename" 2>/dev/null | grep -c "All OK"` -eq 1 ];
    #echo "unrar x -p"$password" $wol "$filename"" >> $LOGFILE
       then
       SUCCESS=1
    fi
    done < "$PASSWORT"
    
       if [ "$SUCCESS" -eq 0 ]; then
         let COUNT=COUNT-1
       fi
    
    ##### RAR Archive löschen
    #########################
    
      if [ "$CLEAN" -eq 1 ] ; then
         if [ "$SUCCESS" -eq "1" ]; then
           rm "${sfilename}".rar
           rm "${sfilename}".r[0-9][0-9]
         fi
      fi
    cd "$CURRENT_DIR"
    done
    IFS=$IFS_TEMP
    
    ##### Log Ausgabe
    #################
    
    if [ "$COUNT" -ne 0 ]; then
      EXIT_PHRASE="gefunden und entpackt" >>$LOGFILE
      if [ "$CLEAN" -eq 1 ]; then
      EXIT_PHRASE="gefunden, entpackt und entfernt" >>$LOGFILE
      fi
      if [ "$COUNT" = 1 ]; then
      echo "`date`" "$COUNT Datei $EXIT_PHRASE" >>$LOGFILE
      echo "---------------------------------------" >>$LOGFILE
      else
      echo "`date`" "$COUNT Dateien $EXIT_PHRASE" >>$LOGFILE
      echo "---------------------------------------" >>$LOGFILE
      fi
    else
      echo "`date`" "Nichts entpackt" >> $LOGFILE
      echo "`date` Entpacken fehlgeschlagen" >> $LOGFILE
      echo "---------------------------------------" >>$LOGFILE
    fi
    
    exit 0
    
     
Thema:

for schleife für eine Zeile

Die Seite wird geladen...

for schleife für eine Zeile - Ähnliche Themen

  1. Systemd-Projekt veröffentlicht Event-Verarbeitungsschleife

    Systemd-Projekt veröffentlicht Event-Verarbeitungsschleife: Das Systemd-Projekt hat seine selbst entwickelte Event-Verarbeitungsschleife zum stabilen Teil von libsystemd erklärt. »sd-event« steht damit auch...
  2. continue in Schleife einbauen

    continue in Schleife einbauen: Hallo alle zusammen, ich schreibe grad an einem shell script und habe folgendes Problem: Ich möchte, dass die beiden if Anweisungen (zeile...
  3. [FRAGE] Dateinamen normalisieren während sie in einer "for" Schleife sind

    [FRAGE] Dateinamen normalisieren während sie in einer "for" Schleife sind: Moin Gemeinde, ich habe ein Skript welches Emails abholt und weiterverarbeitet, manche müssen ausgedruckt werden. Nun hat sich herausgestellt...
  4. bash for schleife mit if

    bash for schleife mit if: Hey, ich krieg die nicht so hin wie ich sie gerne hätte for FOLDERNAME in $(find /home/hexenwerk/ -maxdepth 1 -type d -exec basename {} \; )...
  5. if schleife etc

    if schleife etc: Hallo Community, ich bin wieder relativ neu im Bereich Linux / Unix Scripting ... jetzt habe ich folgendes Problem. ich habe eine liste mit...