Hallo,
ein Shellscript kopiert cron-gesteuert Files aus einem Verzeichnis auf eine Remot-Maschine. Wenn scp erfolgreich war (man scp: The scp utility exits 0 on success, and >0 if an error occurs. ), dann sollen die lokalen Files gelöscht werden.
Allerdings gestaltet sich die Prüfung auf "0" schwieriger als gedacht:
... rc=`/usr/bin/scp -qpB ${j} user@host:verzeichnis/${j}` if [ "$rc" = "0" ] ; then ...
matcht nie. Ein:
if [ -z "$rc" ] ; then
hingegen matcht, allerdings bin ich mir nicht sicher, ob der test ( -z ) in diesem Falle korrekt ist. Ich erwarte ja eigentlich das Zeichen '0' und keinen leere Wert.
Wo ist mein Denkfehler?
Mit freundlichen Grüßen
Jens Puruckherr
Hi Jens,
On Mon, Jul 14, 2008 at 13:16:59 +0200, Jens Puruckherr wrote:
Wenn scp erfolgreich war (man scp: The scp utility exits 0 on success, and >0 if an error occurs. ), dann sollen die lokalen Files geloescht werden.
Allerdings gestaltet sich die Pruefung auf "0" schwieriger als gedacht:
... rc=`/usr/bin/scp -qpB ${j} user@host:verzeichnis/${j}` if [ "$rc" = "0" ] ; then ...
Backticks holen Dir nicht den Rueckgabewert, sondern das, was der Prozess auf stdout ausgibt. Der Rueckgabewert des letzten Kommandos steht in der Shellvariablen "$?".
/usr/bin/scp -qpB ${j} user@host:verzeichnis/${j} if [ $? = 0 ] ; then ...
Gruss, Chris
Jens Puruckherr wrote:
Hallo,
ein Shellscript kopiert cron-gesteuert Files aus einem Verzeichnis auf eine Remot-Maschine. Wenn scp erfolgreich war (man scp: The scp utility exits 0 on success, and >0 if an error occurs. ), dann sollen die lokalen Files gelöscht werden.
Allerdings gestaltet sich die Prüfung auf "0" schwieriger als gedacht:
... rc=`/usr/bin/scp -qpB ${j} user@host:verzeichnis/${j}` if [ "$rc" = "0" ] ; then ...
matcht nie.
Natürlich nicht. In rc steht ja auch nicht der Rückgabewert deines scp-Aufrufs, sondern die Ausgabe.
Versuch mal sowas: /usr/bin/scp -qpB ${j} user@host:verzeichnis/${j} rc=$? if [ "$rc" = "0" ] ; then ...
Noch ein Hinweis: Wollen wir mal hoffen, daß dein $j niemals Leerzeichen enthält... sonst müßtest du das vielleicht ein wenig besser verpacken: /usr/bin/scp -qpB "${j}" "user@host:verzeichnis/${j}"
Ciao, Thomas
Jens Puruckherr jpuruckherr@cyberport.de (Mo 14 Jul 2008 13:16:59 CEST):
Hallo,
ein Shellscript kopiert cron-gesteuert Files aus einem Verzeichnis auf eine Remot-Maschine. Wenn scp erfolgreich war (man scp: The scp utility exits 0 on success, and >0 if an error occurs. ), dann sollen die lokalen Files gelöscht werden.
Allerdings gestaltet sich die Prüfung auf "0" schwieriger als gedacht:
... rc=`/usr/bin/scp -qpB ${j} user@host:verzeichnis/${j}` if [ "$rc" = "0" ] ; then
Zur Funktion der Backticks haben ja schon andere etwas gesagt.
if scp -qbP ... ; then fi
wäre meine Lösung für Dein Problem. Oder Du guckst man nach "rsync" und der Option "--remove-source-files".
lug-dd@mailman.schlittermann.de