2011-09-01 20 views
0

在Python中,我們可以使用「導入」將另一個名稱空間的名稱導入當前名稱空間。Cygwin(或實際的UNIX shell)是否有一些命令將名稱從另一個名稱空間導入當前命名空間,如在Python中一樣?

同樣,UNIX shell腳本中是否存在像「命名空間」這樣的概念?如果是這樣,那麼Cygwin(或實際的UNIX shell)是否有一些命令將命名空間中的名稱從另一個命名空間導入當前命名空間,就像在Python中一樣?謝謝。

請注意有管理員權限的社區成員:我真的認爲這個問題是一個編程問題,而不是「超級用戶」問題。請詳細說明爲什麼你不同意這一點。非常感謝您的時間。

+2

順便說一句,它不是管理員決定的,它是社區本身。話雖如此,我知道沒有這樣做的shell--它們都依賴於內部命令或路徑。如果您想導入命令,請添加到路徑中。 – paxdiablo

+0

謝謝。我想嘗試導入名稱(a.k.a.變量),而不是命令。 –

+1

您始終可以使用'source'從通用腳本加載變量/別名/函數。 –

回答

0

沒有辦法做到你所要求的。

source envFile命令和它的替代. envFile可以非常有幫助。

envFile文件將只是一個環境assingments列表。

FrontOfficeSystem=MyFrontOffice 
BackOfficeSystem=myBackOffice 

當您在你的腳本「源」的envFile(任何名稱將工作)的命令時,shell讀取的代碼,就好像是直接在主shell腳本。就像'包括'在很多語言。但是命名空間,......沒有。見下。

更多幫助:請參閱indirect references高級Bash腳本,這可能比使用eval ...(每個下面)更好,但我沒有機會使用它。

最後,你還可以從評估和VARNAME間接受益,即

src=FrontOffice 
eval \$${src}System="${src} has data" 

src=BackOffice 
eval \$${src}System="${src} has data" 

不是一個很好的例子,但我沒有訪問到我真的去鎮上這一想法的腳本。它幫助我泛化(sp)一些代碼,否則這些代碼將不得不重複10次,對於每個數據src(我把重複的代碼塊放在for循環中,src名稱作爲for的元素列表) ),那麼評估會將$ {src}系統擴展爲FrontOfficeSystem,BackOfficeSystem)。如果您的src列表中包含空格,則所有投注都將關閉。

在您的終端窗口中使用set -vx並複製/粘貼上面的代碼以查看它是如何工作的。它可能有幫助。

我希望這會有所幫助。

P.S.因爲你似乎是一個新用戶,如果你得到一個可以幫助你的答案,請記住將它標記爲已接受,並且/或者給它一個+(或 - )作爲有用的答案。

+0

非常感謝您的幫助。 –

相關問題