for schleife für eine Zeile

M

Mister-XY

Grünschnabel
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"
 
Ich danke dir, nun habe ich nur noch das Problem, dass dann das erste Zeichen eine leerteichen ist.
 
wieso ist das ein Problem?

Du kannst den String aber ja auch anders zusammenbauen - also erst der neue Wert, dann der bestende String.
 
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.
 
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.
 
ich kann das Problem nicht nachvollziehen - hier tut's.

Poste also bitte mal dein komplettes Script.
 
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
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

HandbrakeCLI Shell Skript

continue in Schleife einbauen

SSD auf einen (geringfügig) kleineren USB-Stick wiederherstellen

Zeilen kopieren mit SED

Zurück
Oben