前面已經和大家說了很多bash的特性,那我們接着和大家來說說其它特性:bash變量。
說到變量,大家都很熟知,但是它的具體定義是什麼呢?這裏我們來說一下:變量,是一段有名稱的連續的內存空間;這段內存空間的名稱,稱爲變量名;在這段內存空間中存儲的數據,則稱爲變量值。變量既然是一段有名稱的內存空間,那麼如果我們向一段內存空間(變量)中進行存儲數據的過程,就被稱爲賦值操作;賦值符號通常爲"="。
在我們瞭解賦值之前,你需要知道變量的一些特性:
1.變量是有類型之分的,比如:你想要將123賦值到變量中,如果以整型方式賦值,則爲:01111011;如果以字符型來賦值:(1).以ASCII來賦值則需要佔用三字節;(2).以UTF-8的話則需要佔用9字節。也就是說,你以不同的類型來賦值,效果是不一樣的。
2.變量分爲強變量以及弱變量:
強變量:使用之前必須事先予以聲明;必須聲明變量類型;
弱變量:在使用之前無需聲明,無需指明變量類型;(bash變量)
變量的賦值方法:VARNAME=VALUE,它的含義爲:將某數值(VALUE)通過賦值操作(=)存儲於特定的內存空間中(VARNAME);要想賦值,你得先有一個具體的變量名稱,否則你把值賦到哪裏呢?那麼,bash中變量名稱的命名是有一定規範的:
1.變量名只能以"_"或"字母"爲起始字符,後面的其他字符可以是任意字母,數字或下劃線;
2.變量名中的字母是大小寫敏感的;
3.命名的書寫格式:
全大寫:HISTSIZE
全小寫:myvar
駝峯式:MyNewVariable
連接式:My_New_Var
4.變量名要能做到見名知意;
5.變量名不能與已知變量或bash的內置變量重複;
bash中的變量也有分類,按照變量的作用範圍來劃分,以及按照變量的聲名方式。
根據變量的作用範圍來劃分:
全局變量(環境變量):作用範圍爲整個shell進程,包括其子shell;
本地變量:作用範圍爲當前登錄時打開的shell進程,不包括其子shell;
局部變量:作用範圍僅僅只是當前程序段,一般用於函數;
根據變量的聲明方式來劃分:
bash內置變量:
普通的內置變量:HISTSIZE,...
位置參數變量:$0, $1, $2, ...
特殊變量:$?, $#, $*, $@, $$, ...
$?:展開爲最近一次執行的命令的狀態返回值(退出狀態碼);用以表示最近一次執行的命令是否成功執行;
$#:不包括$0在內的其餘的位置參數的個數,以十進制數字表示;
$*:從$1開始展開爲位置參數。當使用雙引號引用展開的結果時,它展開爲特殊變量IFS的第一個字符分隔的值;
$@:從$1開始展開爲位置參數。當使用雙引號引用展開的結果時,它展開爲單獨的字符串;
$$:展開爲當前shell的進程標識符;
自定義變量:根據用戶自己的需求來定義變量。
那麼咱們就趁熱來說一說自定義變量,也就是變量的使用。你可以對變量進行聲明,當然你所聲明的變量都是自定義變量(這個自定義變量可以是全局變量,本地變量或者局部變量)。那麼我們可以同過相關的操作來聲明變量:
1.變量的聲明與使用:
1)聲明全局變量
export VARNAME
export VARNAME=VALUE
declare命令:
declare - Set variable values and attributes.
格式:declare [-aAfFgilrtux] [-p] [name[=value] ...]
常用的選項:
-a:聲明索引數組(如果支持)
-A:聲明關聯數組(如果支持)
-i:聲明整型變量
-l:聲明變量並將變量值中的字母轉換爲小寫字母;
-u:聲明變量並將變量值中的字母轉換爲大寫字母;
-r:聲明只讀變量;該變量僅能進行一次賦值操作;
-x:聲明變量並將其導出爲全局變量;
declare -x VARNAME[=VALUE]
[root@localhost ~]# echo $MYVAR [root@localhost ~]# export MYVAR='123' [root@localhost ~]# echo $MYVAR 123 [root@localhost ~]# csh [root@localhost ~]# echo $0 csh [root@localhost ~]# echo $MYVAR 123 [root@localhost ~]# declare -x AVAR='234' [root@localhost ~]# echo $AVAR 234 [root@localhost ~]# csh [root@localhost ~]# echo $0 csh [root@localhost ~]# echo $AVAR 234 [root@localhost ~]# echo $0 csh
2) 聲明本地變量:
VARNAME=VALUE
[root@localhost ~]# echo $0 -bash [root@localhost ~]# BVAR='345' [root@localhost ~]# echo $0 -bash [root@localhost ~]# echo $BVAR 345 [root@localhost ~]# csh [root@localhost ~]# echo $0 csh [root@localhost ~]# echo $BVAR BVAR: Undefined variable.
3) 聲明局部變量:
local VARNAME[=VALUE]
2.查看環境變量:
set命令:
查看和改變shell屬性的值及查看shell變量的變量名和變量值;
export命令:
查看變量名稱,也可以爲變量賦值;
env命令:
顯示環境變量,不顯示函數;
3.查看變量的值:
echo ${VARNAME}
4.撤銷變量的賦值及變量聲明
unset VARNAME
[root@localhost ~]# echo $BVAR 345 [root@localhost ~]# unset BVAR [root@localhost ~]# echo $BVAR BVAR: Undefined variable.
有關於保存變量的shell配置文件:
通用配置文件:
/etc/bashrc
/etc/profile
/etc/profile.d/*
私人配置文件:
~/.bashrc
~/.bash_profile
注意:
1.一般情況下,變量都是隨用隨聲明,除非有必要,否則不建議修改配置文件的內容;
2.聲明的變量在使用完以後,最好使用unset命令予以撤銷;