我正在尝试在两个不同的函数中使用全局变量,这是一种共享变量。
计划1:
#!/bin/bash
glob="1"
func1(){
echo "start1: $glob"
((glob++))
}
func2(){
echo "start2: $glob"
}
func1
func2
输出结果为:
start1: 1
start2: 2
这很好并且预期..现在,如果我把它们放在循环中,并将其中一个函数发送到后台......
#!/bin/bash
glob="1"
func1(){
echo "start1 :$glob"
while :; do
((glob++))
echo "Incremneter: $glob"
sleep 1
done
}
func2(){
echo "start2: $glob"
while :; do
echo "Receiver $glob "
sleep 1
done
}
func1 &
func2
输出:
Incremneter: 3
Receiver 1
Incremneter: 4
Receiver 1
Incremneter: 5
Receiver 1
Incremneter: 6
Receiver 1
Incremneter: 7
Receiver 1
Incremneter: 8
Receiver 1
Incremneter: 9
Receiver 1
Incremneter: 10
继续......
输出是这两个函数都保留了它们自己的变量" glob"。这是因为一个进程在后台运行吗?有没有出路,同步" glob"的副本?在两个职能中。