我在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