第2章 shell變量的核心基礎

變量簡介

變量的賦值方式:先寫變量名稱,然後“=”,最後是值,中間無任何空格

變量類型

變量可分爲兩類:環境變量(全局變量)和普通變量(局部變量)

環境變量

一般指用export內置命令導出的變量,用於定義shell的運行環境,保證shell命令的正確執行

shell通過環境變量來確定登錄用戶名、命令路徑、終端類型、登錄目錄等

按照系統規範,環境變量的名字均採用大寫的形式

查看設置的變量:setenv

set命令輸出所有的變量,包括全局變量和局部變量;

set -o命令只顯示bash shell的所有參數配置信息

env命令只顯示全局變量

自定義環境變量

1、設置環境變量

命令格式

1export 變量名 =value

2)變量名 =value ;export 變量名

3declare –x 變量名 =value

例子:

export NAME=wangxian
NAME=wangxian ;export NAME
declare –x NAME=oldboy

[

root@wangxian ~]# tail -1 /etc/profile
export WANG='xianwang'            #添加自定義變量
[root@wangxian ~]# source /etc/profile
[root@wangxian ~]# echo $WANG      #打印變量值
xianwang
[root@wangxian ~]# env|grep WANG       #查看定義結果
WANG=xianwang

1)用戶的環境變量配置

[root@wangxian ~]# ls /root/.bashrc            #推薦在此文件中優先設置
/root/.bashrc
[root@wangxian ~]# ls /root/.bash_profile
/root/.bash_profile

2)全局環境變量的配置

/etc/profile
/etc/bashrc            #推薦在此文件中優先設置
/etc/profile.d/

2、設置登錄提示的兩種方式

1/etc/motd裏增加提示字符

2)在/etc/profile.d/下面增加腳本

顯示與取消環境變量

通過echoprintf打印環境變量

envprintenv)顯示默認的環境變量

unset消除本地變量和環境變量

 

環境變量知識小結:

變量名通常要大寫;

變量可以在自身的shell及子shell中使用

常用export來定義環境變量

執行env默認可以顯示所有的環境變量名及對應的值

輸出時用“$變量名,取消用“unset變量名

書寫crond定時任務要注意,腳本要用到的環境變量最好先在所執行的shell腳本中重新定義;

若希望環境變量永久生效,可將其放在用戶環境變量文件或全局環境變量文件裏

普通變量

定義本地變量

本地變量在用戶當前shell生存期的腳本中使用

1、普通變量定義

變量名=value

變量名=’value’

變量名=”value”

2、在shell中定義變量名及變量內容賦值的要求

變量名一般由字母、數字、下劃線組成

3、示例:

[root@wangxian ~]# a=192.168.1.2
[root@wangxian ~]# b='192.168.1.2'
[root@wangxian ~]# c="192.168.1.2"
[root@wangxian ~]# echo "a=$a"
a=192.168.1.2
[root@wangxian ~]# echo "b=$b"
b=192.168.1.2
[root@wangxian ~]# echo "c=${c}"
c=192.168.1.2

4、變量定義的基本技巧總結:

1)不加引號,直接定義變量內容

2)單引號,輸出變量內容時單引號裏是什麼就輸出什麼,即使內容中有變量和命令也會把它們原樣輸出

3)雙引號,輸出變量內容時引號的變量及命令會經過解析後再輸出內容。

經驗:數字內容的變量定義可以不加引號,其他沒有特別要求的字符串等定義最好都加上雙引號,如果真的需要原樣輸出就加單引號,定義變量加雙引號是最常見的使用場景。

 

5、把一個命令的結果作爲變量的內容賦值的方法

變量名=`ls`

變量名=$(ls)

PS:當變量後面連接有其他字符的時候,必須給變量加上大括號{}

例如:$wangxian_name就要改成${wangxian}_name

變量定義及變量輸出說明

單引號、雙引號、反引號與不加引號的知識說明

名稱

解釋

單引號

所見即所得,即輸出時會將單引號內的所有內容都原樣輸出,或者描述爲單引號裏面看到的是什麼就會輸出什麼;這稱爲強引用

雙引號

輸出雙引號內的所有內容;如果內容中有命令、變量、特殊字符等,會先把變量、命令、轉義字符解析出結果,然後再輸出最終內容,推薦使用,稱爲弱引用

無引號

賦值時,如果變量內容中有空格,則會造成賦值不完整。而在輸出內容時,會將含有空格的字符串視爲一個整體來輸出;如果內容中有命令、變量等,則會先把變量、命令解析出結果,然後輸出最終內容;如果字符串中帶有空格等特殊字符,則有可能無法完整的輸出,因此需要改加雙引號

反引號

一般用於引用命令,執行的時候命令會被執行,相當於$(),賦值和輸出都要用``將命令引起來

 

建議:

在腳本中定義普通字符串變量時,應儘量把變量的內容用雙引號括起來

單純數字的變量內容可以不加引號

希望變量的內容原樣輸出時需要加單引號

希望變量值引用命令並獲取命令的結果時就用反引號或$()

變量定義技巧總結

可以多學習操作系統自帶的/etc/init.d/functions函數庫腳本的定義思路

1)變量名及變量內容定義小結

1、變量名只能爲字母、數字或下劃線,只能以字母或下劃線開頭

2、變量名的定義要有一定的規範,並且要見名知意

3、一般的變量定義、賦值常用雙引號;簡單連續的字符串可以不加引號;希望原樣輸出時使用單引號

4、希望變量的內容是命令的解析結果時,要用反引號``,或者用$()

2shell定義變量時使用“=”的知識

“a=1”裏等號是賦值的意思,比較變量是否相等時可以用“=”“==”

3)打印輸出及使用變量的知識

打印輸出或使用變量時,變量名前要接$符號,變量名後緊接其他字符的時候要用{}將變量名單獨括起來。unsetexport等不加$

打印輸出或使用變量時,一般加雙引號或不加引號;如果是字符串變量,最好加雙引號;原樣輸出時加單引號。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章