17
这气味越野车,但也许,有人能解释一下:BASH:全局变量是不可更新的功能,只有当该功能正在管道(简单的例子)
下面的脚本不能正常工作,输出低于:
#!/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