Esto huele con errores, pero probablemente, alguien puede explicarlo:BASH: Las variables globales no son actualizables en una función sólo cuando se canaliza esa función (ejemplo sencillo)
La siguiente secuencia de comandos no funciona, la salida es a continuación:
#!/bin/bash
GLOBAL_VAR="OLD"
myfunc() {
echo "func before set> $GLOBAL_VAR"
GLOBAL_VAR="NEW"
echo "func after set> $GLOBAL_VAR"
}
myfunc | cat
echo "final value> $GLOBAL_VAR"
de salida:
func before set> OLD
func after set> NEW
final value> OLD
Ahora, simplemente despega el | cat
y funciona!
#!/bin/bash
GLOBAL_VAR="OLD"
myfunc() {
echo "func before set> $GLOBAL_VAR"
GLOBAL_VAR="NEW"
echo "func after set> $GLOBAL_VAR"
}
myfunc
echo "final value> $GLOBAL_VAR"
Salida:
func before set> OLD
func after set> NEW
final value> NEW