全局变量的值在BASH中不会改变

时间:2009-07-30 09:55:31

标签: linux bash scripting

我正在研究一个具有全局变量的BASH脚本。变量的值在函数/子例程中更改。但是当我尝试在函数外部打印该变量时,值不会改变。 示例代码如下:

#!/bin/bash

count=

linux_f()
    {
        let count=100
    }

linux_f

echo $count

echo语句打印为空白而不是100 为什么全局变量的值不会在函数中遍历而不会出现。

3 个答案:

答案 0 :(得分:2)

您的代码适合我,打印100.这是我使用的代码:

count=

linux_f()
    {
        let count=100
    }

linux_f

echo $count

编辑:我已经尝试过在MSYS上使用bash版本2和在Fedora Linux上使用版本3,但它适用于两者。你确定要执行那个脚本吗?尝试在那里放置一个回音“就是这样”,以确保显示某些内容。除此之外,我不知所措。

答案 1 :(得分:1)

也许是因为您要分配给countl而不是count

答案 2 :(得分:0)

该变量赋值中存在拼写错误(在函数内部)。一旦修复,它将起作用:

[dsm@localhost:~]$ var=3
[dsm@localhost:~]$ echo $var
3
[dsm@localhost:~]$ function xxx(){ let var=4 ; }
[dsm@localhost:~]$ xxx
[dsm@localhost:~]$ echo $var
4
[dsm@localhost:~]$ 

以脚本形式运行:

[dsm@localhost:~]$ cat test.sh 
#!/bin/bash

var=
echo "var is '$var'"
function xxx(){ let var=4 ; }
xxx
echo "var is now '$var'"
[dsm@localhost:~]$ ./test.sh #/ <-- #this is to stop the highlighter thinking we have a regexp
var is ''
var is now '4'
[dsm@localhost:~]$