Christian Seiler: UNIX: Unterdrückung von Fehlermeldungen

Beitrag lesen

Hallo Turtle,

Wenn in dem Ausgangsverzeichnis keine pdf-Dokumente vorhanden sind, dann gibt es leider auch eine Fehlermeldung deshalb.
Diese Fehlermeldung möchte ich aber unterdrücken, da ich es nicht als Fehler werte wenn keine pdf-Dokumente vorhanden sind.
Wie schaffe ich das?

Du kannst zwei Dinge machen: 1) kannst Du alle Fehlermeldungen unterdrücken, indem Du an einen Befehl 2>/dev/null anhängst (das leitet die Fehlerausgabe auf /dev/null um, und /dev/null kannst Du mit einem schwarzen Loch vergleichen):

mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads 2>/dev/null

Allerdings unterdrückst Du somit auch Fehlermeldungen, die aus anderen Gründen auftauchen (bspw: aus irgend einem Grund stimmen die Dateirechte nicht mehr und das »mv« schlägt deswegen fehl - dann würdest Du ja informiert werden wollen, oder?). Insofern halte ich es für besser, einfach zu Prüfen, ob das »*« von der Shell expandiert wird (Dateien existieren) oder nicht:

$EXPANDIERT enthält nach dieser Zeile entweder

/home/virtual/jubo.de/home/upload/*.pdf oder eine Liste von Dateien

je nachdem, ob Dateien existieren, oder nicht.

EXPANDIERT=$(echo /home/virtual/jubo.de/home/upload/*.pdf)

Hier wird nun $EXPANDIERT mit /home/virtual/jubo.de/home/upload/*.pdf

verglichen - wenn $EXPANDIERT *nicht* diesen Wert hat, enthält es eine

Liste mit Dateien, und somit existieren überhaupt welche

if [ "/home/virtual/jubo.de/home/upload/*.pdf" != "${EXPANDIERT}" ] ; then

# Deswegen können die Dateien auch verschoben werden
  mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads

fi

Viele Grüße,
Christian