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
stdout
Dies 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