2016-10-21 17 views
0

ich eine Logik in Shell-Skript bin der UmsetzungUmleiten mein Echo Ausgabe in eine Datei

#!/bin/bash 
LOGFILE=">> /tmp/testlog.txt" 

echo "My log output" $LOGOUTPUT 

Ausgang: Mein Logausgabe >> /tmp/testlog.txt

Gibt es eine Möglichkeit, meine zu umleiten Echoausgabe an /tmp/testlog.txt anstelle der oben angezeigten Zeile auf der Konsole.

Hinweis: Bitte nicht vorschlagen unten Lösung

echo "My log ouptut" >> /tmp/testlog.txt 

Jede andere Lösung abgesehen davon?

+0

was falsch ist dieser Vorschlag? echo "Mein LogOutput" >> /tmp/testlog.txt – Vahid

+0

'LOGFILE =" >> /tmp/testlog.txt "' erzeugt einen String. Das ist eine einzige Einheit. Sie können das nicht so verwenden, wie Sie es versuchen. Ihre 'echo' Anweisung erhält zwei Argumente mit Ihrem Versuch. Das ist nicht was du willst. – arkascha

+0

Es ist nichts falsch mit dem Vorschlag. Ich habe eine spezielle Anforderung, wo ich meine Echo-Befehlsausgabe auf seriell oder in eine Datei umschalten muss. Ich sollte dazu in der Lage sein, indem ich den Wert der Variablen LOGFILE ändere. Also eine Alternative finden. – Murali

Antwort

0

Versuchen Sie, die Umleitungszeichen außerhalb Ihrer LOGFILE Variable zu verwenden.

#!/bin/bash 
LOGFILE=/tmp/testlog.txt 

echo "My log output" >> $LOGFILE 
0

Verwenden exec > >(tee -i $logfile)

Ich benutze es auf diese Weise in der Regel:

function start_logging() { 
    logfile="$1" 
    touch $logfile 
    exec > >(tee -i $logfile) 
    exec 2>&1 #also redirect stderr 
    return 0 
} 

Rufen Sie diese Funktion gibt es zum Beispiel /tmp/test.log, wird es alle Ihre Programmausgabe in der log Datei und verhindern, dass sie auf den Ausgaben von std und err angezeigt wird.

EDIT: Redirect NUR-Datei: >> "filename.t 2>&1

+0

Das löst meine Anforderung nicht. Ich brauche alle Echo-Ausgabe auf stdout oder in eine Log-Datei umgeleitet werden, basierend auf Wert zugewiesen LOGOUTPUT variabel – Murali

0
function logme() 
{ 
    #Send logs to logfile 
    logfile="/tmp/logfile.txt" 

    #Send logs to stdout 
    #logfile="/dev/stdout" 

    cat >> $logfile 
} 

echo "Hello" | logme 
echo "Friend" | logme 
Verwandte Themen