Shell編程系列-變量是什么?
在shell中,變量是用來存儲(chǔ)數(shù)據(jù)的容器。它們可以存儲(chǔ)各種類型的數(shù)據(jù),如字符串、數(shù)字、數(shù)組等。變量起到了存儲(chǔ)和引用數(shù)據(jù)的作用,使得我們可以在腳本中使用這些數(shù)據(jù)。
通俗來講,變量是為了提高代碼的可讀性和可維護(hù)性,將需要多次用到的數(shù)據(jù)賦值給一個(gè)變量,可以簡化操作。
在shell中,我們可以使用賦值操作符=
來定義變量,并使用$
符號(hào)來引用變量的值。
例如,定義一個(gè)名為name的變量并賦值為"lutixia",可以使用以下命令:name="lutixia"
,其中值的雙引號(hào)不是必須的,除非有特殊字符。
然后,我們可以在腳本中使用$name來引用這個(gè)變量的值。例如,可以使用以下命令打印出變量的值:echo $name
輸出將是lutixia
。
變量的類型
環(huán)境變量
環(huán)境變量是一種特殊的變量,用于存儲(chǔ)系統(tǒng)級(jí)別的配置和信息,如路徑、用戶配置、語言設(shè)置等。它們是由操作系統(tǒng)或用戶設(shè)置的,對(duì)于所有運(yùn)行在該環(huán)境下的進(jìn)程都是可見的,可以在不同的腳本和程序之間共享和傳遞數(shù)據(jù)。
在shell中,可以使用env
命令printenv
或set
命令來查看當(dāng)前環(huán)境中定義的所有環(huán)境變量。
常見的環(huán)境變量
HISTCONTROL:用于控制歷史命令記錄的變量。其中值有ignorespace,ignoredups,ignoreboth,默認(rèn)情況下,HISTCONTROL變量設(shè)置為ignoredups。
ignorespace:如果命令行以空格開頭,該命令將不會(huì)被保存到歷史記錄中。
ignoredups:如果新的命令與歷史記錄中的前一個(gè)命令相同,那么該命令將不會(huì)被保存到歷史記錄中。
ignoreboth:同時(shí)忽略以空格開頭的命令和重復(fù)的命令。
PATH:用于保存命令路徑的變量。
[root@bash.lutixia.cn ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
HISTSIZE:用于設(shè)置歷史命令數(shù)量的變量,默值是 1000。
PS1:用于定制命令提示符的變量。
用戶變量(自定義變量)
用戶變量是用戶自定義的變量,用于存儲(chǔ)數(shù)據(jù)和執(zhí)行腳本。變量的命名通常以字母或下劃線開頭,后面可以跟著字母、數(shù)字或下劃線。在變量、等號(hào)和值之間不能出現(xiàn)空格。
位置變量
變量(Positional Variables)是指在執(zhí)行腳本或命令時(shí),傳遞給腳本或命令的參數(shù)。位置變量以數(shù)字表示,從1開始遞增,表示參數(shù)的位置順序。例如,$1表示第一個(gè)參數(shù),$2表示第二個(gè)參數(shù),以此類推。bash 定義了 9 個(gè)位置變量,如果需要更多,也同樣支持,比如${10},但是更多的位置變量不便理解,可以結(jié)合shift
使用,后面會(huì)介紹到。
未完待續(xù)。。。