2016-07-21 2 views
1

Ich schreibe einige Bash-Skripte und ich bin mit dem folgenden Problem konfrontiert. Lassen Sie uns sagen:Lesen bestimmter Informationen aus dem "Echo" -Befehl beim Drucken und Ignorieren anderer

function echo_ignore_print() 
{ 
    echo "ignoring this print" # print this line for the user without storing its value 
    value=187fef 
    echo "$value" # return this value 
} 

info_to_keep=$(echo_ignore_print) 

echo "$info_to_keep" # ignoring this print 187fef 

Ich muss in der Lage sein zu drucken „diesen Druck zu ignorieren“, sobald das Skript zu dieser Linie bekommt, aber ich brauche auch den Wert der Variablen „$ value“ von selbst zurück, so Ich kann es später benutzen. Ich würde lieber keine globalen Variablen haben.

Gibt es also eine Möglichkeit, King König von Dump die ganze Zeichenfolge des Befehls echo und speichern Sie einige für später? oder eine andere Möglichkeit, dies zu tun?

Vielen Dank für Ihre Hilfe.

+1

Das Richtige zu tun ist, verwenden 'echo„ignorieren diesen Druck“> & 2', so daß die Leitung zu einem anderen geht Dateideskriptor (in diesem Fall Standardfehler). (Veröffentlichen als Kommentar, weil ich nicht weiß, ob das Ändern der Funktion selbst eine Option ist.) – chepner

Antwort

1

können Sie schreiben zu-ignoriert werden Sachen auf stderr statt stdout:

echo_ignore_print() { 
    echo "ignoring this print" >&2 
    value='187fef' 
    echo "$value" 
} 

info_to_keep=$(echo_ignore_print) 
ignoring this print 

echo "$info_to_keep" 
187fef 
Verwandte Themen