In Bash wird einige globale Variable unerwartet deaktiviert, nachdem der Befehl tee
ausgeführt wird.Unerwartete Umgebungsvariable nicht festgelegt
Prüfregeln wie folgt:
#!/bin/bash
function set_global_variable(){
GLOBAL_VARIABLE="global_variable"
echo "set GLOBAL_VARIABLE($GLOBAL_VARIABLE)"
}
function get_global_variable(){
echo "get GLOBAL_VARIABLE($GLOBAL_VARIABLE)"
}
function normal_test(){
unset GLOBAL_VARIABLE
set_global_variable
get_global_variable
}
function unnormal_test(){
unset GLOBAL_VARIABLE
set_global_variable |tee random_file
get_global_variable
}
echo "normal_test"
normal_test
echo "unnormal_test"
unnormal_test
Das Ergebnis:
normal_test
set GLOBAL_VARIABLE(global_variable)
get GLOBAL_VARIABLE(global_variable)
unnormal_test
set GLOBAL_VARIABLE(global_variable)
get GLOBAL_VARIABLE()
Der Wert von global_variable in unnormal_test
null ist, warum?
In einer Pipe werden Befehle in Unter-Shells ausgeführt, was bedeutet, dass alle Änderungen, die sie an der Umgebung vornehmen, in der Parent-Shell nicht sichtbar sind. – Leon