我正在研究一个具有全局变量的BASH脚本。变量的值在函数/子例程中改变。但是,当我尝试在函数外部打印该变量时,该值不会改变。 示例代码如下:全局变量的值在BASH中没有变化
#!/bin/bash
count=
linux_f()
{
let count=100
}
linux_f
echo $count
echo语句打印空白,而不是100 为什么全局变量的值不会在功能和出穿越。
我正在研究一个具有全局变量的BASH脚本。变量的值在函数/子例程中改变。但是,当我尝试在函数外部打印该变量时,该值不会改变。 示例代码如下:全局变量的值在BASH中没有变化
#!/bin/bash
count=
linux_f()
{
let count=100
}
linux_f
echo $count
echo语句打印空白,而不是100 为什么全局变量的值不会在功能和出穿越。
您的代码对我的作品,打印100。这是我使用的代码:
count=
linux_f()
{
let count=100
}
linux_f
echo $count
编辑:我已经尝试过在MSYS上的bash版本2和Fedora Linux上的版本3,它对两者都有效。你确定你正在执行该脚本吗?尝试在这里放一个回声“这就是它”,只是为了确保显示某些东西。除此之外,我不知所措。
该变量赋值中存在拼写错误(在函数内部)。一旦固定它的工作:
[[email protected]:~]$ var=3
[[email protected]:~]$ echo $var
3
[[email protected]:~]$ function xxx(){ let var=4 ; }
[[email protected]:~]$ xxx
[[email protected]:~]$ echo $var
4
[[email protected]:~]$
,并运行一个脚本:
[[email protected]:~]$ cat test.sh
#!/bin/bash
var=
echo "var is '$var'"
function xxx(){ let var=4 ; }
xxx
echo "var is now '$var'"
[[email protected]:~]$ ./test.sh #/ <-- #this is to stop the highlighter thinking we have a regexp
var is ''
var is now '4'
[[email protected]:~]$
这是您的脚本中的错字?你正在设置一个变量`countl`,但你试图获得`count`的值。 – dreamlax 2009-07-30 09:58:35
@dreamlax。是啊。对于错字感到抱歉。现在纠正。 – Viky 2009-07-30 10:02:14
代码错误修复后的作品 – rasjani 2009-07-31 09:30:56