Linux操作系统笔记——Shell变量
目錄
- 一、Shell變量的基本概念
- (一)創(chuàng)建Shell變量
- (二)變量引導符($)
- (三)只讀變量(readonly 命令)
- (四)查看變量(set 命令)
- (五)清除變量(unset 命令)
- 二、Shell變量的分類
- (一)環(huán)境變量
- (二)系統(tǒng)變量
- (三)用戶自定義變量
- 三、Shell的引用符
- (一)雙引號和單引號
- (二)反引號
- (三)花括號
一、Shell變量的基本概念
Shell中的變量分為三種,分別是環(huán)境變量(標準變量)、系統(tǒng)變量以及用戶自定義變量(局部變量),環(huán)境變量的值可被用戶修改,而系統(tǒng)變量是由系統(tǒng)預定義的,用戶只能引用但不能修改,另外用戶可自定義變量,即用戶自定義變量,可以對變量進行創(chuàng)建、賦值以及引用等。
(一)創(chuàng)建Shell變量
- 用戶可自定義變量,直接在變量名稱后加上賦值符“=”即可,其中賦給變量的值可以是數(shù)值、變量、字符串或命令等等(若字符串中包含空格,則需用“”標注)。
例如自定義一個變量名稱為“value”,其值為1000,以及定義一個name變量,內(nèi)容為字符串,如下:
[yyx@yyx12 ~]$ value=1000 [yyx@yyx12 ~]$ name="this is my linux,hello world"如下,創(chuàng)建幾個變量A、B、C、D,通過echo命令輸出其值【echo命令用于輸出字符串或變量】:
[yyx@yyx12 ~]$ A=xiaoming [yyx@yyx12 ~]$ B="xiaoming" [yyx@yyx12 ~]$ C=hello world ... [yyx@yyx12 ~]$ D="hello world" [yyx@yyx12 ~]$ echo $A $B $C $D ...在Linux終端中輸入命令,可看到變量A和變量B的輸出結(jié)果是一樣的,變量C中賦值的字符串中含有空格,但沒有通過雙引號包含,所以報錯,如下:
(二)變量引導符($)
- 在變量前加符號“$”,即可取該變量的值。
例如通過echo命令輸出剛剛創(chuàng)建的value變量的值,如下:
[yyx@yyx12 ~]$ echo $value在Linux終端中輸入命令:
例如創(chuàng)建兩個變量,其中變量B中包含變量A的值,如下:
在Linux終端中輸入命令:
(三)只讀變量(readonly 命令)
- 通過readonly 命令可以將一個變量變?yōu)橹蛔x變量,readonly后直接跟變量的名稱,它的值不能被修改。
如下創(chuàng)建一個變量A并賦予其值,將其設為只讀變量,然后再修改該變量:
[yyx@yyx12 ~]$ A="This is my school" [yyx@yyx12 ~]$ readonly A [yyx@yyx12 ~]$ A="This is his school"在Linux終端中輸入命令,發(fā)現(xiàn)會報錯:
(四)查看變量(set 命令)
- 可以通過set 命令查看當前用戶的環(huán)境變量,它也會顯示用戶自定義的變量。
如下我們創(chuàng)建一個變量如何通過set命令查看該變量:
[yyx@yyx12 ~]$ A=1111111 [yyx@yyx12 ~]$ set在Linux終端中輸入命令,可看到剛剛創(chuàng)建的變量:
(五)清除變量(unset 命令)
- 清除變量可以通過unset 命令,該命令后跟變量的名稱(不用加上變量引導符$),當變量清除后其值為空。
例如創(chuàng)建一個變量后通過echo命令輸出該變量,然后在通過unset命令清除后再次輸出該變量:
[yyx@yyx12 ~]$ words="Linux is an operating system" [yyx@yyx12 ~]$ echo $words ... [yyx@yyx12 ~]$ unset words [yyx@yyx12 ~]$ echo $words ...在Linux終端中輸入命令,可以看到執(zhí)行unset命令后的words變量為空:
關于自定義變量還要注意一點,用戶創(chuàng)建的自定義變量,在退出終端后就會消失,如下:
關閉終端后,通過echo命令輸出該變量的值,可發(fā)現(xiàn)該變量為空:
二、Shell變量的分類
(一)環(huán)境變量
環(huán)境變量都被存放在/etc/profile文件中,如下通過cat命令查看/etc目錄下的profile文件:
[yyx@yyx12 ~]$ cat /etc/profile在Linux終端中輸入命令:
環(huán)境變量有以下幾種:
通過echo命令查看$HOME變量,如下:
[yyx@yyx12 ~]$ echo $HOME在Linux終端中輸入命令:
通過echo命令輸出該變量,如下:
[yyx@yyx12 ~]$ echo $PATH在Linux終端中輸入命令:
這里為什么要說是搜索路徑,是因為/bin和/sbin存放的是二進制可執(zhí)行文件,也就是存放的命令,如下:
| /bin | 存放二進制可執(zhí)行文件 ,它存放著最經(jīng)常使用的命令 |
| /sbin | 通常也是存放二進制可執(zhí)行文件 ,它存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序 |
這里未能理解的小伙伴,可以看之前的文章,其中有講述到相關的目錄知識:
Section 11 Linux操作系統(tǒng)簡介
通過echo命令輸出該變量,如下:
[yyx@yyx12 ~]$ echo $TERM在Linux終端中輸入命令,可看到xterm-256color,即支持啟用256色的Xterm:
通過echo命令輸出該變量,如下:
[yyx@yyx12 ~]$ echo $IFS在Linux終端中輸入命令,該變量的值通常為空:
通過echo命令輸出該變量,如下:
[yyx@yyx12 ~]$ echo $SHELL在Linux終端中輸入命令:
通過echo命令輸出該變量,如下:
[yyx@yyx12 ~]$ echo $PS1在Linux終端中輸入命令:
(二)系統(tǒng)變量
Shell中的系統(tǒng)變量是系統(tǒng)定義并賦予初值的,用戶只能引用但不能修改其值,常用的Shell系統(tǒng)變量如下表:
| $0 | 當前Shell腳本的名稱,對應于命令行上輸入的腳本名 |
| $1,$2,……,$9 | 分別表示命令行上第1-9個命令行參數(shù) |
| $# | 命令行上的參數(shù)個數(shù),不包括$0 |
| $* | 命令行上的所有參數(shù) |
| $@ | 同上 |
| $$ | 當前進程的進程號 |
| $? | 上一條命令的退出狀態(tài) |
| $! | 最后一個后臺進程的進程號 |
(三)用戶自定義變量
如何自定義變量在剛剛Shell變量的基本概念中已經(jīng)講過,這里不再累述。
- 在Unix/Linux操作系統(tǒng)中,我們規(guī)定允許使用未經(jīng)定義和賦值的變量,當通過$引用這些變量時,它們的值為空。
例如直接通過echo命令輸出一個未創(chuàng)建的變量filename的值(并未創(chuàng)建filename這個變量),如下:
[yyx@yyx12 ~]$ echo $filename在Linux終端中輸入命令,可看到空了一行,顯示它是空的:
三、Shell的引用符
(一)雙引號和單引號
前面已經(jīng)講過,在一個雙引號中帶有變量引導符$,則表示它會取這個變量的值,即雙引號中可以有變量,同時也可以出現(xiàn)轉(zhuǎn)義字符。
而單引號不一樣,在單引號中其他字符的原有特殊含義都被屏蔽了,它們顯示的是這些符號的基本含義,如下:
[yyx@yyx12 ~]$ number=12345 [yyx@yyx12 ~]$ A="He is $number" [yyx@yyx12 ~]$ B='He is $number' [yyx@yyx12 ~]$ echo $A ... [yyx@yyx12 ~]$ echo $B ...在Linux終端中輸入命令,可看到B變量值中的單引號內(nèi)的$number無效,它通過echo命令顯示的是原本的內(nèi)容,其中的字符失去了其特殊含義:
(二)反引號
- 反引號用于將反引號其中的字符串當作命令來執(zhí)行,即該命令執(zhí)行的結(jié)果被直接保存在變量中。
如下,pwd命令被包含在反引號內(nèi):
[yyx@yyx12 ~]$ A=`pwd` [yyx@yyx12 ~]$ echo "The current working directory name is:$A"在Linux終端中輸入命令:
(三)花括號
花括號可以使變量與其后跟的其他字符隔開,如下由于要將變量A與后面字符串拼接起來,如果直接$Aer會直接輸出空值(由于變量Aer未定義,取的是變量Aer的值,而不是變量A的值),所以通過給變量加上花括號,從而使變量與后面的字符串分隔開:
[yyx@yyx12 ~]$ A="he is a teach" [yyx@yyx12 ~]$ echo "${A}er" ... [yyx@yyx12 ~]$ echo "$Aer" ...在Linux終端中輸入命令:
總結(jié)
以上是生活随笔為你收集整理的Linux操作系统笔记——Shell变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构学习笔记——顺序表的基本操作(超
- 下一篇: linux-文件目录类