Bash(Shell)基礎知識(二)

  前面已經和大家說了很多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命令予以撤銷;


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