国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

shellscript學(xué)習(xí)筆記-----shell變量

2024-06-28 14:32:43
字體:
供稿:網(wǎng)友

1、在賦值語句name=value中不能存在空格,例如:name = value這樣的形式會被認(rèn)為是三個變量,因為本質(zhì)上來說,腳本的內(nèi)容就是傳給shell程序的變量,而變量之間是通過空格區(qū)分的。如果想要在value里面出現(xiàn)空格,則需要用引號標(biāo)注出來,想要應(yīng)用變量的內(nèi)容則在變量名前加‘$’符號,如下:

2、當(dāng)我們需要在一些非空格字符之間插入變量時,例如:為了腳本的擴(kuò)展性,常在路徑名/home/my$USERtxt中用變量取代一部分內(nèi)容,但是這樣做的話,我們其實無法區(qū)分變量名是USER還是USERtxt,解決方法其實很簡單,把變量名用花括號括起來即可,如/home/my${USER}txt

3、定義變量時,在變量名前加export就可以將該變量變?yōu)槿肿兞浚⑶铱梢栽谧觭hell中調(diào)用它,不過需要注意的是,該全局變量是通過“值傳遞”的方式進(jìn)入子shell的,類似與C語言中的函數(shù)參數(shù),雖然在子函數(shù)中改變了它的值,但是它原本的值并沒有改變。那么有沒有類似指針的東西能直接改變原變量的值呢?回答是,沒有。(通過env或者export -p命令可以查看全部的全局變量)

4、同時我們能像C語言一樣直接給shell腳本傳遞命令行參數(shù),在腳本中$1就表示第一個參數(shù),$2表示第二個參數(shù),以此類推,需要注意的是,當(dāng)表示第十個以上的參數(shù)時,需要用花括號將序號括起來,例如:${10},因為$10會被分解為$1和0。這里需要注意的是,如果命令行參數(shù)表示的字符串里有空格,那么在輸入命令行是要將該參數(shù)用引號括起來,同時在腳本里引用時,也要使用引號,例如:ls "${1}",否則在腳本內(nèi)部,該參數(shù)也會被誤認(rèn)為由空格分割的多個參數(shù)

5、在腳本中,符號$*表示所有的命令行參數(shù),我們可以用如下方式對其進(jìn)行遍歷,不過通常我們更推薦使用"$@",因為它能在命令行參數(shù)內(nèi)部有空格的時候?qū)⑵鋮^(qū)分開來

6、變量$#用于統(tǒng)計命令行參數(shù)的個數(shù):

7、變量的默認(rèn)值:1)B=${A:-"xxx"}表示如果變量A未設(shè)置或值為空,則B=“xxx”,2)與:-符號不同的是${A:="xxx"}表示如果A未設(shè)置或為空,則將A設(shè)置為''xxx'并且返回值"xxx",你可以認(rèn)為:-只做返回值,而不做賦值。3)${A="xxx"}表示當(dāng)且僅當(dāng)變量A未被設(shè)置,它的值置為"xxx",這么做的意思就是允許變量名的默認(rèn)值為空

8、數(shù)組變量的定義與使用如下所示:

9、最后,其實在變量賦值的時候,如果使用了雙引號,那么雙引號內(nèi)的可以不僅僅是字符串,實際上shell會將引號內(nèi)的內(nèi)容進(jìn)行解析。例如引號內(nèi)的$HOME將被替換成變量HOME的值,$(pwd)將被替換成命令pwd的輸出,$((1+1))則將被替換成1+1運算的結(jié)果

 

參考文獻(xiàn):《bash Cookbook》,Carl Albing


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新丰县| 靖边县| 贡嘎县| 长兴县| 呼伦贝尔市| 噶尔县| 海淀区| 呼和浩特市| 曲麻莱县| 酉阳| 无为县| 柏乡县| 景德镇市| 新乡市| 晴隆县| 广东省| 灵石县| 乌什县| 宣恩县| 和林格尔县| 皮山县| 固原市| 灵丘县| 井冈山市| 耿马| 通化县| 剑川县| 江津市| 枝江市| 息烽县| 镇沅| 托克逊县| 高雄市| 青冈县| 南开区| 镇坪县| 微博| 奉新县| 阳东县| 新田县| 闽侯县|