Zum umleiten von stdout und stderr von csh-Skript
Für das folgende Skript
installieren.csh:
#!/bin/csh -f tar -zxf Python-3.1.1.tgz cd Python 3.1.1 ./konfigurieren machen make install cd .. rm -rf Python 3.1.1
Verwendungszweck:
./install.csh |& tee install.log
Wie kann ich das Skript ändern, so dass ich immer noch installieren.log und die Ausgabe auf der Konsole, ohne zu Fragen der Benutzer umleiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige einfache Lösungen:
Lösung 1:
tee jede Zeile, die Sie möchten, melden Sie sich unabhängig, nutzen
-a
switch-tee zum AnhängenLösung 2: Fügen Sie ein zweites Skript.
Zum Beispiel, benennen Sie die aktuelle installieren.csh zu install_commands,
dann fügen Sie eine neue installieren.csh-Skript:
G ' Day,
Ich hoch empfehlen-Weg von der csh auf etwas wie bash oder zsh.
stdio manipulation ist nicht möglich in der csh. Haben Sie eine Lesen des "csh programming considered harmful". Eine elegante Abhandlung zu diesem Thema.
Sorry, es ist nicht eine direkte Antwort, aber Sie werden feststellen, dass Sie halten den Kopf hämmern gegen die Zwänge der csh-je länger Sie dabei bleiben.
Eine Menge der csh-syntax ist bereits in der bash so Ihre Lernkurve nicht zu steil.
Hier ist ein kurzer Vorschlag für die gleiche Sache, geschrieben in bash. Es ist nicht elegant aber.
Habe ich ein bisschen mehr Kontrolle und reporting, so dass, wenn ein problem in einem früheren Schritt die log-Datei wird nur enthalten, bis der Fehler aufgedeckt wurde eher als ein Stapel ziemlich nutzlos Fehlermeldungen aus der späteren Phasen, die wäre nicht komplett jedenfalls.
cheers,
Können Sie es in einer subshell und umleiten der Ausgabe von diesem. Kann mich nicht erinnern, ob das funktioniert in csh, es war eine lange, lange Zeit, seit ich, dass.