我正在研究一个具有全局变量的BASH脚本。变量的值在函数/子例程中更改。但是当我尝试在函数外部打印该变量时,值不会改变。 示例代码如下:
#!/bin/bash
count=
linux_f()
{
let count=100
}
linux_f
echo $count
echo语句打印为空白而不是100 为什么全局变量的值不会在函数中遍历而不会出现。
答案 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:~]$