[英]Exporting a function local variable to the environment
考慮以下代碼:
#!/usr/bin/bash
t_export() {
declare dummy="Hello"
export dummy
echo dummy: $dummy
echo printenv dummy: $(printenv dummy)
}
t_export
echo dummy: $dummy
echo printenv dummy: $(printenv dummy)
輸出:
dummy: Hello
printenv dummy: Hello
dummy:
printenv dummy:
你怎么解釋這個? 我認為環境總是全局的,因此變量dummy
在函數外部也是可見的。
export
不會將值復制到當前環境中。 相反,它在name上設置 export 屬性。 當一個新進程啟動時,任何標有該屬性的變量(連同它們的當前值)都被復制到新進程的環境中。
當t_export
返回時,變量dummy
超出范圍,這意味着它不再可用於導出到新進程。
在函數內部declare
默認為local
。 使用-g
從函數內部聲明全局。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.