Bash unix中函数中变量的作用域
我在Ubuntu Shell中工作,但我希望它也能在UNIX中工作。Bash unix中函数中变量的作用域,bash,unix,Bash,Unix,我在Ubuntu Shell中工作,但我希望它也能在UNIX中工作。 这是我的密码: #!/bin/bash func() { x=42 } x=9 func echo $x 当我只更改了局部变量时,为什么全局x更改为42 在unix中,变量作用域的规则是否不同 是否有一种方法可以将func的返回值设置为全局变量,以便以后在代码中使用 谢谢大家! 首先,您没有编写Linux;实际上,您正在为shell程序编写一个名为bash的函数。在命令行中输入info bash,获取相关文档
这是我的密码:
#!/bin/bash
func()
{
x=42
}
x=9
func
echo $x
- 当我只更改了局部变量时,为什么全局
更改为42x
- 在unix中,变量作用域的规则是否不同
- 是否有一种方法可以将
的返回值设置为全局变量,以便以后在代码中使用func
谢谢大家! 首先,您没有编写Linux;实际上,您正在为shell程序编写一个名为bash的函数。在命令行中输入
info bash
,获取相关文档。对于任何版本的Unix,命令行上发生的事情都取决于您正在运行的shell类型(有许多;bash
是大多数Linux系统的默认shell)
默认情况下,函数中未声明的变量是全局变量。如注释所述,您可以使用
local
将变量标记为函数的本地变量。谢谢!关于这个返回值,有什么方法吗?类似于var=$(有趣)
的东西有点奇怪。您可以打印结果,然后将结果捕获到变量中:$func(){local x;x=“fred”;echo$x;};$威尔玛=$(func);$echo$wilma
打印“fred”,或者,您可以返回一个整数作为错误代码:$func(){return 42};func;误差=$?;echo$ERR
将打印42。(注意返回语句和“}”之间必须有一个换行符,我不能将其包含在评论中。感谢您的回答:)它有助于本地/声明是调查的选项。手册中可以找到最基本的bash问题的答案:可能重复、、等。