第四周了,轉眼就學習有關Linux的知識一月了,從開始的懵懵懂懂,到現在的懵懵懂懂,不變的是無邊無際的知識,改變的是一小片迷霧被我們漸漸撥開了一角,學習的枯燥和充實,陪我們走完這安穩的最后學習時光。
今天分享的是一些我們本周學習的變量方面的東西,那么,什么是變量呢?變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。在我們的linux中bash 屬于弱類型變量把所有的變量統統視作字符型,對于變量的引用無需事先聲明,相當于把聲明和賦值過程同時實現。
變量名的命名法則:
變量名只能包含數字,字母,下劃線,而且不能以數字開頭
見名知義,命名機制遵循某種法則
不能使程序中的保留字:例如if, for,else,then,while等等
變量的分類:本地變量、環境變量、局部變量,位置參數變量、特殊變量、只讀變量……
本地變量:本地變量顧名思義,就是本地能夠使用的變量
我們可以看到我們把a賦值為444,通過echo可以打印出變量a的值
我們進入子shell,變量a只是本地的,不能用了,沒有輸出結果,默認為空和直接輸入命令echo一樣,沒有任何值。
既然可以定義一個變量,那么我們定義了哪些變量了呢?該怎么查看呢?這里就要用到了我們的set查看變量,既顯示本地變量又顯示環境變量!
這里定義的東西太多了,那我們查找時,就可以利用我們的grep配合管道符|來查找我們定義的變量!
既然有了定義和查看,撤銷一個變量也是變得理所當然,unset varname 從內存中刪除該變量的定義,釋放內存空間。
環境變量,環境變量的范圍非常廣泛,對當前的shell和子shell都有用,我們來看幾個例子:
首先我們定義了一個環境變量A為666,我們知道每打開一個shell腳本就相當于進入到了下一級的,只有一些腳本里的本地變量根本沒有必要去清除,因為我們知道變量的作用周期是shell的存活時間,然后運行腳本test,這里我們用了bash,就不用加上權限都可以執行的,結果當然是我們的666,我們還拿了一個本地變量做為例子:
本地變量的作用域在腳本中讀不出來,那我們怎么定義、查看、撤銷環境變量呢?
環境變量賦值:①export name=value②name=value ;export name③name=value; declare -x name
注意:②③都可以把本地變量定義為環境變量
環境變量查看:export,declare -x,env,printenv
注意:bash內嵌了很多的環境變量(通常為全大寫字符),用于定義bash的工作環境
PATH SHELL USERUIDHOME PWD SHLVL LANG MAIL HOSTNAME HISTSIZE —
可以看出我們定義的A可以被查詢出來!
環境變量撤銷:unset varname和本地變量的撤銷方法一樣
局部變量:這個知識點還沒有涉及,會在以后的博客里補充
只讀變量:只讀變量無法重新賦值,且不支持撤銷,存活時間為當前bash的生命周期
readonly varname 設置只讀變量
declare -r varname 設置只讀變量
readonly -p 查看所有的只讀變量
可以看出我們定義了一個只讀的A,然后給A賦值,失敗提示只讀變量,那我們看看我們的只讀變量都有什么
我們的A還在其中,但是如果我們退出當前shell,A就失效了
剛好我們當前處于二級shell,退出當前shell,變量就會失效,我們再次通過readonly -p查詢,也沒有結果A
而我們看到這里就會想了,我們的shell為什么一開始就有那么多的變量呢?這些變量從來的?開機就定義的?這就要涉及到我們的配置文件方面的知識了,當我們進入登錄時的shell進程時,系統會讀取我們的配置文件,來為系統的運行自動加入一些變量,如果有興趣的可以提前去預習有關bash的配置文件方面的知識。
原創文章,作者:努力!奮斗!,如若轉載,請注明出處:http://www.www58058.com/83761