Shell中變量作用域的介紹與使用命令
前言
眾所周知Shell 中的變量只作用于當前進程。如需在子進程中創(chuàng)建副本可使用 export 內(nèi)建命令。 有時使用臨時變量語法可以非常方便。
變量使用
- 任何地方都可以定義 Shell 變量,使用 = 分隔變量名和變量值。= 前后不可出現(xiàn)空格,但變量的值可以留空。
- 讀取變量需要添加$前綴。
- 變量作用域為當前進程。
例如:
url=http://harttle.com echo $url
export 到子進程
通常變量是不需要 export 的,但是當你需要把一個工作分割成若個小的任務(wù), 分別用一個腳本來實現(xiàn)的時候,就需要把變量名傳遞給它們。 比如有一個 spider.sh 來獲下載任意 URL 到臨時目錄:
#!/usr/bin/env bash curl $url > $TMPDIR/$RANDOM.html
我們需要將當前腳本中的 url 傳遞給spider.sh:
export url=http://harttle.com bash ./spider.sh # 等價于(如果該文件有可執(zhí)行權(quán)限的話) ./spider.sh
值得注意的是export只會在子進程中創(chuàng)建變量的副本,即spider.sh對它的改動不會體現(xiàn)在當前進程。
在當前進程執(zhí)行腳本
使用 source 或 . 內(nèi)建命令可以在當前進程執(zhí)行另一個腳本,因此當前上下文的變量對該腳本是可見的。
url=http://harttle.com source ./spider.sh # 等價于 . ./spider.sh
臨時設(shè)置環(huán)境變量
根據(jù) Shell 語法,在一個簡單命令前可以包含任意個賦值語句。這些變量賦值將會在執(zhí)行命令前展開,等效于臨時的環(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 # 兩條命令,只作用于當前進程 url=http://harttle.com && bash ./spider.sh # 組合命令,只作用于當前進程 export url=http://harttle.com; bash ./spider.sh # 兩條命令,作用于父子進程
簡單命令中的變量賦值也不作用于當前進程。例如下面的代碼將會輸出空行:
url=http://harttle.com echo $url
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Shell腳本中執(zhí)行sql語句操作mysql的5種方法
這篇文章主要介紹了Shell腳本中執(zhí)行sql語句操作mysql的5種方法,本文講解了將SQL語句直接嵌入到shell腳本文件中、命令行調(diào)用單獨的SQL文件、使用管道符調(diào)用SQL文件等方法,需要的朋友可以參考下2014-10-10linux下passwd命令設(shè)置修改用戶密碼的方法
下面小編就為大家?guī)硪黄猯inux下passwd命令設(shè)置修改用戶密碼的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02一天一個shell命令 linux文本操作系列-touch命令用法
這篇文章主要介紹了一天一個shell命令 linux文本操作系列-touch命令用法 ,需要的朋友可以參考下2016-06-06CentOS 6.x系統(tǒng)升級Python到2.7版本的Shell腳本分享
這篇文章主要介紹了CentOS 6.x系統(tǒng)升級Python到2.7版本的Shell腳本分享,本文把升級過程總結(jié)成一個自動腳本,需要的朋友可以參考下2014-11-11一文學(xué)會使用Linux內(nèi)核模塊&proc實例統(tǒng)計所有進程信息
這篇文章主要介紹了使用Linux內(nèi)核模塊&proc實例統(tǒng)計所有進程信息詳解,2023-05-05crond構(gòu)建linux定時任務(wù)及日志查看腳本詳解
這篇文章主要為大家介紹了crond構(gòu)建linux定時任務(wù)及日志查看腳本詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10