Lỗi này có mùi, nhưng có thể ai đó có thể giải thích:BASH: Biến toàn cục không thể cập nhật trong một hàm chỉ khi chức năng đó được đường ống (ví dụ đơn giản)
Tập lệnh sau không hoạt động, đầu ra là dưới đây:
#!/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"
Output:
func before set> OLD
func after set> NEW
final value> OLD
Bây giờ, chỉ cần cất cánh | cat
và nó hoạt động!
#!/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"
Output:
func before set> OLD
func after set> NEW
final value> NEW