Linux操作系统笔记——Shell变量
目錄
- 一、Shell變量的基本概念
- (一)創建Shell變量
- (二)變量引導符($)
- (三)只讀變量(readonly 命令)
- (四)查看變量(set 命令)
- (五)清除變量(unset 命令)
- 二、Shell變量的分類
- (一)環境變量
- (二)系統變量
- (三)用戶自定義變量
- 三、Shell的引用符
- (一)雙引號和單引號
- (二)反引號
- (三)花括號
一、Shell變量的基本概念
Shell中的變量分為三種,分別是環境變量(標準變量)、系統變量以及用戶自定義變量(局部變量),環境變量的值可被用戶修改,而系統變量是由系統預定義的,用戶只能引用但不能修改,另外用戶可自定義變量,即用戶自定義變量,可以對變量進行創建、賦值以及引用等。
(一)創建Shell變量
- 用戶可自定義變量,直接在變量名稱后加上賦值符“=”即可,其中賦給變量的值可以是數值、變量、字符串或命令等等(若字符串中包含空格,則需用“”標注)。
例如自定義一個變量名稱為“value”,其值為1000,以及定義一個name變量,內容為字符串,如下:
[yyx@yyx12 ~]$ value=1000 [yyx@yyx12 ~]$ name="this is my linux,hello world"如下,創建幾個變量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的輸出結果是一樣的,變量C中賦值的字符串中含有空格,但沒有通過雙引號包含,所以報錯,如下:
(二)變量引導符($)
- 在變量前加符號“$”,即可取該變量的值。
例如通過echo命令輸出剛剛創建的value變量的值,如下:
[yyx@yyx12 ~]$ echo $value在Linux終端中輸入命令:
例如創建兩個變量,其中變量B中包含變量A的值,如下:
在Linux終端中輸入命令:
(三)只讀變量(readonly 命令)
- 通過readonly 命令可以將一個變量變為只讀變量,readonly后直接跟變量的名稱,它的值不能被修改。
如下創建一個變量A并賦予其值,將其設為只讀變量,然后再修改該變量:
[yyx@yyx12 ~]$ A="This is my school" [yyx@yyx12 ~]$ readonly A [yyx@yyx12 ~]$ A="This is his school"在Linux終端中輸入命令,發現會報錯:
(四)查看變量(set 命令)
- 可以通過set 命令查看當前用戶的環境變量,它也會顯示用戶自定義的變量。
如下我們創建一個變量如何通過set命令查看該變量:
[yyx@yyx12 ~]$ A=1111111 [yyx@yyx12 ~]$ set在Linux終端中輸入命令,可看到剛剛創建的變量:
(五)清除變量(unset 命令)
- 清除變量可以通過unset 命令,該命令后跟變量的名稱(不用加上變量引導符$),當變量清除后其值為空。
例如創建一個變量后通過echo命令輸出該變量,然后在通過unset命令清除后再次輸出該變量:
[yyx@yyx12 ~]$ words="Linux is an operating system" [yyx@yyx12 ~]$ echo $words ... [yyx@yyx12 ~]$ unset words [yyx@yyx12 ~]$ echo $words ...在Linux終端中輸入命令,可以看到執行unset命令后的words變量為空:
關于自定義變量還要注意一點,用戶創建的自定義變量,在退出終端后就會消失,如下:
關閉終端后,通過echo命令輸出該變量的值,可發現該變量為空:
二、Shell變量的分類
(一)環境變量
環境變量都被存放在/etc/profile文件中,如下通過cat命令查看/etc目錄下的profile文件:
[yyx@yyx12 ~]$ cat /etc/profile在Linux終端中輸入命令:
環境變量有以下幾種:
通過echo命令查看$HOME變量,如下:
[yyx@yyx12 ~]$ echo $HOME在Linux終端中輸入命令:
通過echo命令輸出該變量,如下:
[yyx@yyx12 ~]$ echo $PATH在Linux終端中輸入命令:
這里為什么要說是搜索路徑,是因為/bin和/sbin存放的是二進制可執行文件,也就是存放的命令,如下:
| /bin | 存放二進制可執行文件 ,它存放著最經常使用的命令 |
| /sbin | 通常也是存放二進制可執行文件 ,它存放的是系統管理員使用的系統管理程序 |
這里未能理解的小伙伴,可以看之前的文章,其中有講述到相關的目錄知識:
Section 11 Linux操作系統簡介
通過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終端中輸入命令:
(二)系統變量
Shell中的系統變量是系統定義并賦予初值的,用戶只能引用但不能修改其值,常用的Shell系統變量如下表:
| $0 | 當前Shell腳本的名稱,對應于命令行上輸入的腳本名 |
| $1,$2,……,$9 | 分別表示命令行上第1-9個命令行參數 |
| $# | 命令行上的參數個數,不包括$0 |
| $* | 命令行上的所有參數 |
| $@ | 同上 |
| $$ | 當前進程的進程號 |
| $? | 上一條命令的退出狀態 |
| $! | 最后一個后臺進程的進程號 |
(三)用戶自定義變量
如何自定義變量在剛剛Shell變量的基本概念中已經講過,這里不再累述。
- 在Unix/Linux操作系統中,我們規定允許使用未經定義和賦值的變量,當通過$引用這些變量時,它們的值為空。
例如直接通過echo命令輸出一個未創建的變量filename的值(并未創建filename這個變量),如下:
[yyx@yyx12 ~]$ echo $filename在Linux終端中輸入命令,可看到空了一行,顯示它是空的:
三、Shell的引用符
(一)雙引號和單引號
前面已經講過,在一個雙引號中帶有變量引導符$,則表示它會取這個變量的值,即雙引號中可以有變量,同時也可以出現轉義字符。
而單引號不一樣,在單引號中其他字符的原有特殊含義都被屏蔽了,它們顯示的是這些符號的基本含義,如下:
[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變量值中的單引號內的$number無效,它通過echo命令顯示的是原本的內容,其中的字符失去了其特殊含義:
(二)反引號
- 反引號用于將反引號其中的字符串當作命令來執行,即該命令執行的結果被直接保存在變量中。
如下,pwd命令被包含在反引號內:
[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終端中輸入命令:
總結
以上是生活随笔為你收集整理的Linux操作系统笔记——Shell变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构学习笔记——顺序表的基本操作(超
- 下一篇: (*长期更新)软考网络工程师学习笔记——