bash: So leiten Sie die Ausgabe einer Funktion nach /dev/null um

bash: So leiten Sie die Ausgabe einer Funktion nach /dev/null um

Ich habe ein Skript mit einigen Funktionen ( ~/func/functions.sh) und ich habe das andere Skript ( ~/scripts/example.sh)

Code: funktionen.sh

 #!/bin/bash
 function NameofFunction()
 {
  # do something...
  echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2
  }

Code: example.sh (funktioniert gut)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2}

}

functioninExample 2>/dev/null

Code: example.sh (funktioniert nicht)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2} 2>/dev/null

}

functioninExample

Wie kann ich das Echo meiner Funktion umleiten, ohne die Funktion zu bearbeiten?

NameofFunction ${VAR1} ${VAR2} 2>/dev/null 

funktioniert nicht.

Wie kann ich das Echo meiner Funktion umleiten, ohne die Funktion functioninExample umzuleiten?

Antwort1

stdoutDies liegt daran, dass Ihre Funktion nicht druckt stderr. Versuchen Sie es

NameofFunction ${VAR1} ${VAR2} >/dev/null

oder beide umleitenstderr Und stdout:

NameofFunction ${VAR1} ${VAR2} >/dev/null 2>&1

Beachten Sie, dass es guter Stil ist, Fehler in auszugeben stderr. Anstelle meiner obigen Antwort sollten Sie Ihre Funktion also besser wie folgt ändern:

echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2

verwandte Informationen