亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一問弄懂Shell變量四大分類

 更新時(shí)間:2023年05月09日 09:41:37   作者:柒號(hào)華仔  
Shell變量分為環(huán)境變量、本地變量、位置參數(shù)變量和特殊變量,本文就詳細(xì)的介紹一下這四種變量的具體使用,具有一定的參考,感興趣的可以了解一下

上一篇我們講述了Shell的基本概念和運(yùn)行方式,對(duì)Shell有了整體了解。如果說Shell是一棟大廈,那么變量便是一塊塊磚,是基礎(chǔ)元素。Shell變量比可編譯語言的變量更為復(fù)雜,種類更多,靈活性非常大,因此需要全面細(xì)致的把握。

Shell變量

什么是變量

變量是程序設(shè)計(jì)語言中的一個(gè)可以變化的量,當(dāng)然,可以變化的是變量的值。變量在幾乎所有的程序設(shè)計(jì)語言中都有定義,并且其涵義也大同小異。

從本質(zhì)上講,變量就是在程序中保存用戶數(shù)據(jù)的一塊內(nèi)存空間,而變量名就是這塊內(nèi)存空間的地址。 在程序的執(zhí)行過程中,保存數(shù)據(jù)的內(nèi)存空間的內(nèi)容可能會(huì)不斷地發(fā)生變化,但是,代表內(nèi)存地址的變量名卻保持不變。 由于變量的值是在計(jì)算機(jī)的內(nèi)存中,所以當(dāng)計(jì)算機(jī)被重新啟動(dòng)后,變量的值將會(huì)丟失。因此,對(duì)于需要長久保存的數(shù)據(jù),應(yīng)該寫入到磁盤中,避免存儲(chǔ)在變量中。

shell變量定義

shell變量是一種用來存放數(shù)據(jù)的編程元素,它可以幫助我們簡化很多工作 。shell變量的值可以是數(shù)字、字符串、文件名、命令的輸出等。shell變量可以在shell腳本中使用,也可以在命令行中使用,可以被賦值、修改、刪除、導(dǎo)出等。

shell變量賦值是使用等號(hào)(=)將變量的名稱和變量的值連接起來,例如:name=Tom。注意,等號(hào)兩邊不能有空格,否則會(huì)出錯(cuò)。shell變量的賦值可以在命令行中進(jìn)行,也可以在shell腳本中進(jìn)行。shell變量的賦值可以覆蓋之前的賦值,例如:name=Tom; name=Jerry。

shell變量使用時(shí)在變量的名稱前加上美元符號(hào)$,例如:echo $name。這樣就可以打印出變量的值。shell變量的使用可以在命令行中進(jìn)行,也可以在shell腳本中進(jìn)行。shell變量的使用可以和其他命令或字符串組合,例如:echo “My name is $name”。

shell變量分類

Shell變量可以分為以下幾種類型:

  • 環(huán)境變量(Environment Variable):環(huán)境變量是在Shell啟動(dòng)時(shí)由操作系統(tǒng)設(shè)置的,它們對(duì)于所有的Shell和Shell執(zhí)行的程序都是可見的。一些常見的環(huán)境變量包括PATH、HOME、USER等。
  • 本地變量(Local Variable):本地變量是由Shell程序定義的,僅在當(dāng)前Shell會(huì)話中可見,對(duì)于其他的Shell和Shell執(zhí)行的程序是不可見的。本地變量可以通過=符號(hào)來定義和賦值,例如myvar="hello"。
  • 位置參數(shù)變量(Positional Parameter Variable):位置參數(shù)變量是用來存儲(chǔ)Shell腳本的命令行參數(shù)的,它們包括$1、$2、$3等。例如,如果我們運(yùn)行一個(gè)Shell腳本并且傳遞了兩個(gè)參數(shù),那么這兩個(gè)參數(shù)會(huì)被分別賦值給$1$2
  • 特殊變量(Special Variable):特殊變量是由Shell程序預(yù)定義的,用于存儲(chǔ)一些特定的值或狀態(tài)。例如,$? 用于存儲(chǔ)上一個(gè)命令的返回值,$$用于存儲(chǔ)當(dāng)前Shell進(jìn)程的PID,$IFS用于存儲(chǔ)當(dāng)前Shell的字段分隔符等。

環(huán)境變量

常見變量

在Linux Shell中,有許多預(yù)定義的環(huán)境變量。以下是一些常見的環(huán)境變量及其用途:

  • PATH:用于定義可執(zhí)行文件的搜索路徑。當(dāng)我們輸入一個(gè)命令時(shí),Shell會(huì)在PATH變量指定的路徑中搜索該命令的可執(zhí)行文件。例如:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
  • HOME:用于定義當(dāng)前用戶的主目錄路徑。該變量通常用于Shell腳本中,以便訪問用戶的主目錄下的文件和目錄。例如:
$ echo $HOME
/home/myuser
  • USER:用于定義當(dāng)前登錄用戶的用戶名。該變量通常用于Shell腳本中,以便獲取當(dāng)前腳本的執(zhí)行者。例如:
$ echo $USER
myuser
  • PS1:用于定義Shell提示符的格式。該變量通常用于自定義Shell提示符的外觀和行為。例如:
$ export PS1="[\e[32m]\u@\h:[\e[34m]\w[\e[0m]\$ "

定義一個(gè)帶有顏色的Shell提示符,其中u代表用戶名,h代表主機(jī)名,w代表當(dāng)前工作目錄。

  • LANG:用于定義當(dāng)前系統(tǒng)的默認(rèn)語言。該變量通常用于控制程序的本地化和國際化。例如:
$ echo $LANG
en_US.UTF-8
  • PWD:當(dāng)前工作目錄。例如:
$ echo $PWD
/home/myuser

變量引用

在Shell腳本中,我們可以使用$符號(hào)來引用環(huán)境變量。例如:

#!/bin/bash
echo "My home directory is $HOME"
echo "My username is $USER"
echo "My PATH is $PATH"
echo "The value of MYVAR is $MYVAR"

執(zhí)行后輸出當(dāng)前用戶的主目錄、用戶名、PATH變量和MYVAR變量的值。

變量賦值

使用export命令可以將環(huán)境變量設(shè)置為全局變量,這樣它們就可以在當(dāng)前Shell會(huì)話中的所有進(jìn)程中使用。例如:

$ export MYVAR="hello"

定義一個(gè)名為MYVAR的環(huán)境變量,并將其值設(shè)為hello。

同時(shí),環(huán)境變量是可以重新賦值的,我們可以使用export命令將一個(gè)本地變量賦值給一個(gè)環(huán)境變量,或者直接在當(dāng)前Shell會(huì)話中使用export命令重新賦值一個(gè)已經(jīng)存在的環(huán)境變量。

例如,假設(shè)我們有一個(gè)名為MYVAR的環(huán)境變量,其當(dāng)前值為hello。我們可以使用以下命令將一個(gè)本地變量myvar賦值給MYVAR環(huán)境變量:

$ myvar="world"
$ export MYVAR=$myvar

把本地變量myvar的值world賦值給環(huán)境變量MYVAR,此時(shí)MYVAR的值為world。

同樣地,我們也可以直接在當(dāng)前Shell會(huì)話中使用export命令重新賦值一個(gè)已經(jīng)存在的環(huán)境變量:

$ export MYVAR="world"

重新將MYVAR的值設(shè)置為world。

需要注意的是,一旦我們重新賦值了一個(gè)環(huán)境變量,該變量的新值將在當(dāng)前Shell會(huì)話中生效,同時(shí)也會(huì)影響到當(dāng)前Shell會(huì)話中的所有子進(jìn)程和后續(xù)的Shell會(huì)話。因此,如果我們需要在一個(gè)Shell會(huì)話中重新賦值一個(gè)環(huán)境變量,需要謹(jǐn)慎考慮其可能會(huì)對(duì)系統(tǒng)中其他程序的運(yùn)行產(chǎn)生的影響。

本地變量

變量定義

本地變量可以使用=符號(hào)進(jìn)行定義和賦值。例如:

$ myvar="hello"

定義一個(gè)名為myvar的本地變量,并將其值設(shè)為hello。我們可以使用echo命令來輸出該變量的值:

$ echo $myvar
hello

本地變量只在當(dāng)前Shell會(huì)話中可見,對(duì)于其他的Shell和Shell執(zhí)行的程序是不可見的。

例如,如果我們在一個(gè)Shell會(huì)話中定義了一個(gè)本地變量:

$ myvar="hello"

那么在另一個(gè)Shell會(huì)話中,該變量是不存在的:

$ echo $myvar

變量引用

在Shell腳本中,我們可以使用$符號(hào)來引用本地變量。例如:

#!/bin/bash
myvar="hello"
echo "The value of myvar is $myvar"

輸出The value of myvar is hello。

變量賦值

本地變量可以被重新賦值,例如:

$ myvar="hello"
$ echo $myvar
hello
$ myvar="world"
$ echo $myvar
world
$ unset myvar
$ echo $myvar

定義一個(gè)名為myvar的本地變量,并將其值設(shè)為hello,然后將其重新賦值為world,最后使用unset命令刪除該變量。

變量刪除

shell變量的刪除的方法是使用unset命令,例如:unset name,這樣就可以刪除變量的名稱和變量的值。shell變量的刪除可以在命令行中進(jìn)行,也可以在shell腳本中進(jìn)行,刪除可以釋放內(nèi)存空間,避免變量名沖突。

unset命令語法:unset [選項(xiàng)] [name ...]

選項(xiàng)含義
-f僅刪除函數(shù)
-v僅刪除變量(不包括只讀變量)
-n刪除具有引用屬性的變量名(如果該選項(xiàng)存在)

如果不加選項(xiàng)參數(shù),那么既可以刪除變量,也可以刪除函數(shù)。

需要注意的是,unset命令不能刪除只讀變量。

位置參數(shù)變量

變量定義

在Shell編程中,位置參數(shù)變量用于獲取腳本或函數(shù)的輸入?yún)?shù)。當(dāng)我們執(zhí)行一個(gè)Shell腳本或函數(shù)時(shí),我們可以將參數(shù)傳遞給該腳本或函數(shù),并在其中使用位置參數(shù)變量來獲取這些參數(shù)的值。

常見位置參數(shù)變量:

  • $0:當(dāng)前腳本或函數(shù)的名稱。
  • $1、$2、$3、...:當(dāng)前腳本或函數(shù)的第一個(gè)、第二個(gè)、第三個(gè)參數(shù),以此類推。
  • $#:當(dāng)前腳本或函數(shù)的參數(shù)個(gè)數(shù)。
  • $*:當(dāng)前腳本或函數(shù)的所有參數(shù),作為一個(gè)字符串。
  • $@:當(dāng)前腳本或函數(shù)的所有參數(shù),作為一個(gè)數(shù)組。

變量引用

下面是一個(gè)使用位置參數(shù)變量的示例腳本:

#!/bin/bash
echo "The name of this script is: $0"
echo "The first parameter is: $1"
echo "The second parameter is: $2"
echo "The third parameter is: $3"
echo "The total number of parameters is: $#"
echo "All the parameters are: $*"
echo "All the parameters are: $@"

當(dāng)我們執(zhí)行該腳本并傳遞三個(gè)參數(shù)時(shí),輸出將如下所示:

$ ./script.sh hello world 123
The name of this script is: ./script.sh
The first parameter is: hello
The second parameter is: world
The third parameter is: 123
The total number of parameters is: 3
All the parameters are: hello world 123
All the parameters are: hello world 123

我們可以看到,使用位置參數(shù)變量可以輕松地獲取腳本或函數(shù)的輸入?yún)?shù),并對(duì)其進(jìn)行處理和操作。位置參數(shù)變量適用于編寫需要處理大量輸入?yún)?shù)的腳本。

特殊變量

變量定義

在Shell編程中,有很多特殊變量可以用來獲取各種系統(tǒng)信息和腳本信息,使用特殊變量能夠簡化代碼復(fù)雜度,減少使用復(fù)雜代碼來完成固定任務(wù)的情況,提升運(yùn)行效率。

常見的特殊變量:

  • $$:當(dāng)前腳本或進(jìn)程的進(jìn)程ID。
  • $?:上一個(gè)命令或腳本的退出狀態(tài)碼。
  • $!:上一個(gè)后臺(tái)進(jìn)程的進(jìn)程ID。
  • $USER:當(dāng)前用戶的用戶名。
  • $HOME:當(dāng)前用戶的主目錄路徑。
  • $PATH:當(dāng)前系統(tǒng)的執(zhí)行路徑。
  • $PWD:當(dāng)前工作目錄路徑。
  • $SHELL:當(dāng)前使用的Shell程序路徑。
  • $RANDOM:一個(gè)0到32767之間的隨機(jī)數(shù)。
  • $LINENO:當(dāng)前腳本的行號(hào)。
  • $IFS:當(dāng)前腳本的字段分隔符。
  • $PS1:Shell提示符的格式。
  • $PS2:Shell續(xù)行提示符的格式。

變量引用

下面是一個(gè)使用特殊變量的示例腳本:

#!/bin/bash
?
echo "The process ID of this script is: $$"
echo "The exit status of the last command is: $?"
echo "The process ID of the last background job is: $!"
echo "The current user is: $USER"
echo "The home directory of the current user is: $HOME"
echo "The current PATH is: $PATH"
echo "The current working directory is: $PWD"
echo "The current shell is: $SHELL"
echo "A random number between 0 and 32767: $RANDOM"
echo "The current line number is: $LINENO"
echo "The current field separator is: $IFS"

當(dāng)我們執(zhí)行該腳本時(shí),輸出將如下所示:

The process ID of this script is: 1234
The exit status of the last command is: 0
The process ID of the last background job is: 
The current user is: username
The home directory of the current user is: /home/username
The current PATH is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
The current working directory is: /home/username
The current shell is: /bin/bash
A random number between 0 and 32767: 2373
The current line number is: 7
The current field separator is:  

通過示例可以看到,使用特殊變量可以輕松地獲取各種系統(tǒng)信息,并在腳本中使用它們來進(jìn)行處理和操作。在實(shí)際編程中,特殊變量能夠有效簡化代碼,提高執(zhí)行效率,特別是在需要獲取系統(tǒng)信息或處理系統(tǒng)事件的腳本中。

總結(jié)

Shell變量分為環(huán)境變量、本地變量、位置參數(shù)變量和特殊變量,實(shí)際使用中,四者有一定的重疊性。Shell變量是用好Shell編程的基礎(chǔ),靈活恰當(dāng)?shù)氖褂米兞靠梢院喕_本復(fù)雜度,提高腳本運(yùn)行效率和可讀性。

到此這篇關(guān)于一問弄懂Shell變量四大分類的文章就介紹到這了,更多相關(guān)shell變量內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論