2017-03-18 83 views
0

我在Ubuntu Shell中工作,但我也希望它也能在UNIX上工作。
這裏是我的代碼:unix中函數變量的作用域

#!/bin/bash 

func() 
{ 
    x=42 
} 

x=9 
func 
echo $x 
  • 爲什麼全球x改爲42,當我在爲變量的作用域UNIX不同的規則改變只局部變量x
  • 是?
  • 有沒有一種方法如何將func的返回值設置爲全局變量,以後可以在代碼中使用?

謝謝!

+0

本地/申報是研究 – grail

+0

答案最基本的bash的問題可以在手冊中找到的選項:https://tiswww.case.edu/php/chet/bash/bashref.html – ccarton

回答

0

首先,你不是編程Linux;你實際上正在編寫一個名爲bash的shell程序的函數。在命令行上輸入info bash以獲取相關文檔。對於任何版本的Unix,命令行會發生什麼情況取決於您正在運行哪種類型的shell(有很多;大多數Linux系統默認爲bash)。

未聲明的函數中的變量默認爲全局變量。如註釋所述,您可以使用local將變量標記爲函數的本地。

+0

謝謝! 關於那個返回值,有沒有一些方法? 類似於'var = $(fun)'的東西' – SevO

+0

這有點奇怪。您可以打印結果,然後將結果捕獲到一個變量中:'$ func(){local x; X = 「fred的」; echo $ x; }; $ wilma = $(func);或者,您可以返回一個整數作爲錯誤代碼:'$ func(){return 42};或者,您可以返回一個整數作爲錯誤代碼:'$ func(){return 42}; $ echo $ wilma'打印「fred」 –

+0

。 FUNC; ERR = $ ?; echo $ ERR'這將打印42.(注意return語句和'}'之間必須有一個換行符,我不能在評論中包含它。 –