您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Shell中變量作用域的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Shell中變量作用域的示例分析”這篇文章吧。
前言
眾所周知Shell 中的變量只作用于當(dāng)前進(jìn)程。如需在子進(jìn)程中創(chuàng)建副本可使用 export 內(nèi)建命令。 有時(shí)使用臨時(shí)變量語法可以非常方便。
變量使用
任何地方都可以定義 Shell 變量,使用 = 分隔變量名和變量值。= 前后不可出現(xiàn)空格,但變量的值可以留空。
讀取變量需要添加$前綴。
變量作用域?yàn)楫?dāng)前進(jìn)程。
例如:
url=http://harttle.com echo $url
export 到子進(jìn)程
通常變量是不需要 export 的,但是當(dāng)你需要把一個(gè)工作分割成若個(gè)小的任務(wù), 分別用一個(gè)腳本來實(shí)現(xiàn)的時(shí)候,就需要把變量名傳遞給它們。 比如有一個(gè) spider.sh 來獲下載任意 URL 到臨時(shí)目錄:
#!/usr/bin/env bash curl $url > $TMPDIR/$RANDOM.html
我們需要將當(dāng)前腳本中的 url 傳遞給spider.sh:
export url=http://harttle.com bash ./spider.sh # 等價(jià)于(如果該文件有可執(zhí)行權(quán)限的話) ./spider.sh
值得注意的是export只會(huì)在子進(jìn)程中創(chuàng)建變量的副本,即spider.sh對(duì)它的改動(dòng)不會(huì)體現(xiàn)在當(dāng)前進(jìn)程。
在當(dāng)前進(jìn)程執(zhí)行腳本
使用 source 或 . 內(nèi)建命令可以在當(dāng)前進(jìn)程執(zhí)行另一個(gè)腳本,因此當(dāng)前上下文的變量對(duì)該腳本是可見的。
url=http://harttle.com source ./spider.sh # 等價(jià)于 . ./spider.sh
臨時(shí)設(shè)置環(huán)境變量
根據(jù) Shell 語法,在一個(gè)簡單命令前可以包含任意個(gè)賦值語句。這些變量賦值將會(huì)在執(zhí)行命令前展開,等效于臨時(shí)的環(huán)境變量。
A “simple command” is a sequence of optional variable assignments and redirections, in any sequence, optionally followed by words and redirections, terminated by a control operator. – Simple Commands, Shell Commands
例如下面命令可以把url變量傳遞給spider.sh:
url=http://harttle.com bash ./spider.sh
這是一條 簡單命令,下面的多條命令或 組合命令:
url=http://harttle.com; bash ./spider.sh # 兩條命令,只作用于當(dāng)前進(jìn)程 url=http://harttle.com && bash ./spider.sh # 組合命令,只作用于當(dāng)前進(jìn)程 export url=http://harttle.com; bash ./spider.sh # 兩條命令,作用于父子進(jìn)程
簡單命令中的變量賦值也不作用于當(dāng)前進(jìn)程。例如下面的代碼將會(huì)輸出空行:
url=http://harttle.com echo $url
以上是“Shell中變量作用域的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。