Это пахнет глючно, но, возможно, кто-то может объяснить это:
Следующий скрипт не работает, вывод ниже:
#!/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"
Вывод:
func before set> OLD
func after set> NEW
final value> OLD
Теперь просто снимите | cat
и все заработает!
#!/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"
Вывод:
func before set> OLD
func after set> NEW
final value> NEW