簡體   English   中英

將函數局部變量導出到環境

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM