循环内的全局变量(bash)

时间:2017-03-09 09:50:05

标签: bash shell global-variables

我正在尝试在两个不同的函数中使用全局变量,这是一种共享变量。

计划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"的副本?在两个职能中。

0 个答案:

没有答案