我在Ubuntu Shell中工作,但我也希望它也能在UNIX上工作。
这里是我的代码:unix中函数变量的作用域
#!/bin/bash
func()
{
x=42
}
x=9
func
echo $x
- 为什么全球
x
改为42,当我在为变量的作用域UNIX不同的规则改变只局部变量x
- 是?
- 有没有一种方法如何将
func
的返回值设置为全局变量,以后可以在代码中使用?
谢谢!
我在Ubuntu Shell中工作,但我也希望它也能在UNIX上工作。
这里是我的代码:unix中函数变量的作用域
#!/bin/bash
func()
{
x=42
}
x=9
func
echo $x
x
改为42,当我在为变量的作用域UNIX不同的规则改变只局部变量x
func
的返回值设置为全局变量,以后可以在代码中使用?谢谢!
首先,你不是编程Linux;你实际上正在编写一个名为bash的shell程序的函数。在命令行上输入info bash
以获取相关文档。对于任何版本的Unix,命令行会发生什么情况取决于您正在运行哪种类型的shell(有很多;大多数Linux系统默认为bash
)。
未声明的函数中的变量默认为全局变量。如注释所述,您可以使用local
将变量标记为函数的本地。
谢谢! 关于那个返回值,有没有一些方法? 类似于'var = $(fun)'的东西' – SevO
这有点奇怪。您可以打印结果,然后将结果捕获到一个变量中:'$ func(){local x; X = “fred的”; echo $ x; }; $ wilma = $(func);或者,您可以返回一个整数作为错误代码:'$ func(){return 42};或者,您可以返回一个整数作为错误代码:'$ func(){return 42}; $ echo $ wilma'打印“fred” –
。 FUNC; ERR = $ ?; echo $ ERR'这将打印42.(注意return语句和'}'之间必须有一个换行符,我不能在评论中包含它。 –
本地/申报是研究 – grail
答案最基本的bash的问题可以在手册中找到的选项:https://tiswww.case.edu/php/chet/bash/bashref.html – ccarton