主頁 > 知識(shí)庫 > 詳解shell 變量

詳解shell 變量

熱門標(biāo)簽:蘭州電銷機(jī)器人加盟 電話機(jī)器人對(duì)家居行業(yè)幫助大嗎 如何申請(qǐng)400的電話呀 AI智能電銷機(jī)器人壞處 電商外呼系統(tǒng)排名 黑暗之魂3地圖標(biāo)注 地圖標(biāo)注審核周期 合肥電銷外呼系統(tǒng)供應(yīng)商 沈陽ai電銷智能機(jī)器人

1.簡介

變量是任何一種編程語言都必不可少的組成部分,變量用來存放各種數(shù)據(jù)。腳本語言在定義變量時(shí)通常不需要指明類型,直接賦值就可以,Shell變量也遵循這個(gè)規(guī)則。

在Bash shell 中,每一個(gè)變量的值都是字符串,無論你給變量賦值時(shí)有沒有使用引號(hào),值都會(huì)以字符串的形式存儲(chǔ)。這意味著,Bash shell 在默認(rèn)情況下不會(huì)區(qū)分變量類型,即使你將整數(shù)和小數(shù)賦值給變量,它們也會(huì)被視為字符串,這一點(diǎn)和大部分的編程語言不同。如C/C++ ,變量分為整數(shù)、浮點(diǎn)數(shù)、字符串、布爾等多種類型。當(dāng)然,如果有必要,你也可以使用declare/typeset Shell內(nèi)建命令顯式定義變量的類型,但在一般情況下沒有這個(gè)需求,Shell 開發(fā)者在編寫代碼時(shí)自行注意值的類型即可。

2.變量類型

Shell中按照變量的作用域和生命周期,Shell變量可分為四大類:

(1)永久環(huán)境變量:需要修改配置文件,變量永久生效。

(2)臨時(shí)環(huán)境變量:使用export命令行聲明即可,變量在Shell腳本進(jìn)程結(jié)束后仍然有效,但在關(guān)閉當(dāng)前Shell會(huì)話后失效。

(3)全局變量:在腳本中定義,僅在當(dāng)前Shell腳本中有效,其他Shell腳本進(jìn)程不能訪問,其作用域從定義的位置開始,到腳本結(jié)束或被顯示刪除的地方為止。注意,全局變量既可以在Shell函數(shù)內(nèi)定義,也可以在Shell函數(shù)外定義,因?yàn)镾hell函數(shù)內(nèi)定義的變量默認(rèn)為global,且作用域從“函數(shù)被調(diào)用時(shí)執(zhí)行變量定義的地方”開始,到腳本結(jié)束或被顯示刪除的地方為止。

#!/bin/bash

globalVar=dablelv	#全局變量

(4)局部變量。在Shell腳本中函數(shù)內(nèi)顯示使用local關(guān)鍵字定義的變量。其作用域局限于函數(shù)內(nèi)。同名local變量會(huì)屏蔽global變量。

#!/bin/bash

function test()
{
	local localVar=dablelv	#局部變量
}
test
echo $localVar			 	#輸出為空

3.定義變量

Shell 支持以下三種定義變量的方式:

var=value
var='value'
var="value"

var是變量名,value是賦給變量的值。如果value不包含任何空白符(例如空格、Tab等),那么可以不使用引號(hào);如果value 包含了空白符,那么就必須使用引號(hào)包圍起來。使用單引號(hào)和使用雙引號(hào)也是有區(qū)別的,稍后我們會(huì)詳細(xì)說明。注意,賦值號(hào)的周圍不能有空格,這可能和你熟悉的大部分編程語言都不一樣。

Shell變量的命名規(guī)范和大部分編程語言都一樣:
(1)變量名由數(shù)字、字母、下劃線組成;
(2)必須以字母或者下劃線開頭;
(3)不能使用Shell里的關(guān)鍵字(通過help命令可以查看保留關(guān)鍵字)。

變量定義示例:

name='dablelv'
home="安徽"
age=28

4.訪問變量

使用一個(gè)定義過的變量,只要在變量名前面加美元符號(hào)$即可,如:

name="dablelv"
echo $name
echo ${name}

變量名外面的花括號(hào){}是可選的,加不加都行,加花括號(hào)是為了幫助解釋器識(shí)別變量的邊界,比如下面這種情況:

skill="Java"
echo "I am good at ${skill}Script"

如果不給skill變量加花括號(hào),解釋器就會(huì)把$skillScript當(dāng)成一個(gè)變量(其值為空),代碼執(zhí)行結(jié)果就不是我們期望的樣子了。

推薦給所有變量加上花括號(hào){ },這是個(gè)良好的編程習(xí)慣。

5.修改變量的值

已定義的變量,可以被重新賦值,如:

name='dablelv'
echo $name
name="billwong"

第二次對(duì)變量賦值時(shí)不能在變量名前加,只有在使用變量時(shí)才能加,只有在使用變量時(shí)才能加,只有在使用變量時(shí)才能加。

6.單引號(hào)和雙引號(hào)的區(qū)別

定義變量時(shí),變量的值可以由單引號(hào)包圍,也可以由雙引號(hào)包圍,它們到底有什么區(qū)別呢?不妨以下面的代碼為例來說明:

#!/bin/bash

name='dablelv'
str1='我的名字是${name}'
str2="我的名字是${name}"
echo $str1
echo $str2

運(yùn)行結(jié)果:

我的名字是${name}
我的名字是dablelv

以單引號(hào)包圍變量的值時(shí),單引號(hào)里面是什么就輸出什么,即使內(nèi)容中有變量和命令(命令需要反引起來)也會(huì)把它們?cè)瓨虞敵?。這種方式比較適合定義顯示純字符串的情況,即不希望解析變量、命令等的場景。

以雙引號(hào)包圍變量的值時(shí),輸出時(shí)會(huì)先解析里面的變量和命令,而不是把雙引號(hào)中的變量名和命令原樣輸出。這種方式比較適合字符串中附帶有變量和命令并且想將其解析后再輸出的變量定義。

建議:如果變量的內(nèi)容是數(shù)字,那么可以不加引號(hào);如果真的需要原樣輸出就加單引號(hào);其他沒有特別要求的字符串等最好都加上雙引號(hào),定義變量時(shí)加雙引號(hào)是最常見的使用場景。

7.將命令的結(jié)果賦值給變量

Shell 也支持將命令的執(zhí)行結(jié)果賦值給變量,常見的有以下兩種方式:

variable=`command`
variable=$(command)

第一種方式把命令用反引號(hào)包圍起來,反引號(hào)和單引號(hào)非常相似,容易產(chǎn)生混淆,所以不推薦使用這種方式;第二種方式把命令用$()包圍起來,區(qū)分更加明顯,所以推薦使用這種方式。

例如將兩個(gè)數(shù)值相加賦給某一變量。

var1=1
var2=2
varAdd1=`expr $var1 + $var2`
varAdd2=$(expr $var1 + $var2)

8.只讀變量

使用readonly命令,或者使用declare -rtypeset -r可以將變量定義為只讀變量,只讀變量的值不能被改變。

name="dablelv"
readonly name

declare -r name="dablelv"

typeset -r name="dablelv"

9.刪除變量

使用unset內(nèi)置命令可以刪除變量。語法:

unset variable_name

unset命令不能刪除只讀變量。變量被刪除后不能再次使用。如

#!/bin/bash

name="dablelv"
unset name
echo $name

上面的腳本沒有任何輸出。

以上就是詳解shell 變量的詳細(xì)內(nèi)容,更多關(guān)于shell 變量的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 詳解shell 變量的高級(jí)用法示例
  • 處理Shell腳本中帶有空格的變量(bash腳本)
  • shell判斷一個(gè)變量是否為空方法總結(jié)
  • linux中shell的變量的數(shù)值計(jì)算
  • Shell編程之特殊變量和擴(kuò)展變量詳解
  • Shell編程之變量數(shù)值計(jì)算方法示例
  • shell for循環(huán)、循環(huán)變量值付給其他shell腳本的方法
  • 詳解Shell編程之變量數(shù)值計(jì)算(二)
  • 詳解Shell編程之變量數(shù)值計(jì)算(一)
  • 淺談linux中shell變量$#,$@,$0,$1,$2的含義解釋

標(biāo)簽:黔南 隴南 河北 通遼 淮南 黔南 河池 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解shell 變量》,本文關(guān)鍵詞  詳解,shell,變量,詳解,shell,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解shell 變量》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解shell 變量的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章