scp
verwendet ein interaktives Terminal, um den schicken Fortschrittsbalken zu drucken. Diese Ausgabe in eine Datei zu drucken, macht überhaupt keinen Sinn, also scp
erkennt, wenn seine Ausgabe an einen anderen Ort als ein Terminal umgeleitet wird, und schaltet diese Ausgabe ab.
Es ist jedoch sinnvoll, die Fehlerausgabe in die Datei umzuleiten, falls es Fehler gibt. Wenn Sie möchten, können Sie die Standardausgabe deaktivieren.
Es gibt zwei Möglichkeiten, dies zu tun. Die erste ist, Ihr Skript mit Umleitung von stderr und stdout in die Protokolldatei aufzurufen:
./myscript.sh >log 2>&1
Zweitens können Sie die Bash anweisen, dies direkt in Ihrem Skript zu tun:
#!/bin/sh
exec 2>&1
if $C_SFTP; then
scp -r $C_SFTP_USER@$C_SFTP_HOST:$C_SOURCE "$C_TMPDIR"
fi
...
Wenn Sie nach Fehlern suchen müssen, überprüfen Sie einfach, dass $?
es 0
nachdem der Befehl scp ausgeführt wurde:
if $C_SFTP; then
scp -r $C_SFTP_USER@$C_SFTP_HOST:$C_SOURCE "$C_TMPDIR"
RET=$?
if [ $RET -ne 0 ]; then
echo SOS 2>&1
exit $RET
fi
fi
Eine weitere Möglichkeit ist die Durchführung set -e
in Ihrem Skript, das das Bash-Skript anweist, einen Fehler zu melden, sobald einer der Befehle im Skript fehlschlägt:
#!/bin/bash
set -e
...
Ich hoffe, es hilft. Viel Glück!