【26期】Linux第四周學習小總結

    第四周了,轉眼就學習有關Linux的知識一月了,從開始的懵懵懂懂,到現在的懵懵懂懂,不變的是無邊無際的知識,改變的是一小片迷霧被我們漸漸撥開了一角,學習的枯燥和充實,陪我們走完這安穩的最后學習時光。

    今天分享的是一些我們本周學習的變量方面的東西,那么,什么是變量呢?變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。在我們的linux中bash 屬于弱類型變量把所有的變量統統視作字符型,對于變量的引用無需事先聲明,相當于把聲明和賦值過程同時實現。

    變量名的命名法則:
        變量名只能包含數字,字母,下劃線,而且不能以數字開頭
        見名知義,命名機制遵循某種法則
        不能使程序中的保留字:例如if, for,else,then,while等等 

    變量的分類:本地變量、環境變量、局部變量,位置參數變量、特殊變量、只讀變量……

    本地變量:本地變量顧名思義,就是本地能夠使用的變量

    【26期】Linux第四周學習小總結

    我們可以看到我們把a賦值為444,通過echo可以打印出變量a的值
    【26期】Linux第四周學習小總結

   我們進入子shell,變量a只是本地的,不能用了,沒有輸出結果,默認為空和直接輸入命令echo一樣,沒有任何值。

    【26期】Linux第四周學習小總結 

    既然可以定義一個變量,那么我們定義了哪些變量了呢?該怎么查看呢?這里就要用到了我們的set查看變量,既顯示本地變量又顯示環境變量!

    【26期】Linux第四周學習小總結

    這里定義的東西太多了,那我們查找時,就可以利用我們的grep配合管道符|來查找我們定義的變量!

    【26期】Linux第四周學習小總結

    既然有了定義和查看,撤銷一個變量也是變得理所當然,unset varname 從內存中刪除該變量的定義,釋放內存空間。

    環境變量,環境變量的范圍非常廣泛,對當前的shell和子shell都有用,我們來看幾個例子:

    【26期】Linux第四周學習小總結

    【26期】Linux第四周學習小總結

    首先我們定義了一個環境變量A為666,我們知道每打開一個shell腳本就相當于進入到了下一級的,只有一些腳本里的本地變量根本沒有必要去清除,因為我們知道變量的作用周期是shell的存活時間,然后運行腳本test,這里我們用了bash,就不用加上權限都可以執行的,結果當然是我們的666,我們還拿了一個本地變量做為例子:

    【26期】Linux第四周學習小總結

    【26期】Linux第四周學習小總結

    本地變量的作用域在腳本中讀不出來,那我們怎么定義、查看、撤銷環境變量呢?

    環境變量賦值:①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 —

    【26期】Linux第四周學習小總結
    可以看出我們定義的A可以被查詢出來! 

    境變量撤銷:unset varname和本地變量的撤銷方法一樣

    【26期】Linux第四周學習小總結

    局部變量:這個知識點還沒有涉及,會在以后的博客里補充

    只讀變量:只讀變量無法重新賦值,且不支持撤銷,存活時間為當前bash的生命周期

                    readonly varname 設置只讀變量
                    declare -r varname 設置只讀變量

                    readonly -p 查看所有的只讀變量

    【26期】Linux第四周學習小總結
    可以看出我們定義了一個只讀的A,然后給A賦值,失敗提示只讀變量,那我們看看我們的只讀變量都有什么

    【26期】Linux第四周學習小總結
    我們的A還在其中,但是如果我們退出當前shell,A就失效了

    【26期】Linux第四周學習小總結

    剛好我們當前處于二級shell,退出當前shell,變量就會失效,我們再次通過readonly -p查詢,也沒有結果A

    而我們看到這里就會想了,我們的shell為什么一開始就有那么多的變量呢?這些變量從來的?開機就定義的?這就要涉及到我們的配置文件方面的知識了,當我們進入登錄時的shell進程時,系統會讀取我們的配置文件,來為系統的運行自動加入一些變量,如果有興趣的可以提前去預習有關bash的配置文件方面的知識。

原創文章,作者:努力!奮斗!,如若轉載,請注明出處:http://www.www58058.com/83761

(0)
努力!奮斗!努力!奮斗!
上一篇 2017-08-05
下一篇 2017-08-05

相關推薦

  • N26-第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep ‘^[[:space:]]\+’ /boot/grub2/grub.cfg 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep ‘^#[[:space:]]\+’ /etc/rc.d/rc.…

    Linux干貨 2017-03-06
  • 一次完整的HTTP事務是怎樣一個過程?

    聲明:本文章中的說法僅是個人理解總結,不一定完全正確,但是可以有助于理解。 關于HTTP協議可以參考以下: HTTP協議漫談 http://kb.cnblogs.com/page/140611/ HTTP協議概覽 http://www.cnblogs.com/vamei/archive/2013/05/11/3069788.html 了解HTTP Heade…

    Linux干貨 2015-03-10
  • YUM工具的工作原理、用法及源 碼包的編譯安裝

    YUM工具的工作原理,用法及源碼包的編譯安裝 _ueditor_page_break_tag_ 一、 CentOS: yum, dnf       1.YUM: (Yellow dogUpdate Modifier),rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,up2date的替代工具   …

    Linux干貨 2016-09-01
  • SElinux

    SElinux:Secure Enhanced Linux   SElinux工作與linux內核中他所實現的功能叫做強制訪問控制機制。DAC:是linux的自主訪問控制。MAC:是SElinux引入的訪問法則,叫作強制訪問控制。   SElinux有兩種工作級別:     strick:嚴格級別,每個進程都收到SEl…

    Linux干貨 2016-09-23
  • 馬哥教育網絡班21期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器 集線器也稱HUB,工作在OSI七層結構的第一層物理層,屬于共享型設備,接收數據廣播發出,在局域網內一般都是星型連接拓撲結構,每臺工作站都連接到集線器上。 由于集線器的帶寬共享特性導致網絡利用效率極低,一般在大中型的網絡中不會使用到集線器。 網橋 網橋(Bridge)也稱橋…

    Linux干貨 2016-09-01
  • 文件查找工具—find命令總結

    描述:   find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。 說明:  工作特點:  查找速度略慢; 精確查找;實時查找;可能只搜索用戶具備讀取和執行權限的目錄…

    Linux干貨 2016-08-18
欧美性久久久久