Shell是一種命令行解釋器,是用戶和和操做系統溝通的橋樑,想象下,若是把操做系統內核比做人的大腦,那麼shell就像人的軀殼,經過眼口等與外界交流信息。
Shell它接受來自用戶輸入的命令,而後將這些命令轉化成一系列的系統調用送到內核執行,最後將結果輸出給用戶shell
Shell不僅是一種解釋器,仍是一種編程工具,稱爲腳本語言
編譯型語言
編譯工具先將程序編譯成機器認識的可執行文件,(好比Windows下的exe文件,Linux下的二進制可執行文件),以後運行時直接運行編譯後的文件,所以通常來講編譯型語言執行速度較高,常見的編譯型語言有:C/C++、Java
編程
解釋型語言
解釋型語言是運行時翻譯,執行一條語句就當即翻譯一條,並且每次執行程序都須要進行解釋。
bash
交互模式
和Python相似,shell也有交互模式,其實在咱們使用遠程鏈接工具鏈接Linux時,就是進入了shell交互模式工具
腳本模式
將要執行的命令都放在一個文件中,而後由Bash Shell讀取並執行
#!/bin/bash
# this is a test
echo 'hello world'
第一行
Shell腳本的第一行最好是以 "#!" 開頭,這個是腳本開始的標記,告訴系統執行使用某個解釋器,後面的路徑指示具體的路徑
第二行
這行是一個註釋
第三行
一個簡單的輸出命令this
第一種:將腳本做爲命令行參數
bash test.sh
或者完成路徑:
bash /home/pyvip/test.sh操作系統
第二種:腳本獨立運行
在腳本第一行添加:
#!/bin/bash
給腳本添加可執行權限:
chmod 744 test.sh
運行:
./test.sh命令行
命令行參數形式
這種形式能夠不用給腳本添加可執行權限,能夠直接運行,通常本身寫的shell腳本會採用這種形式來運行
獨立運行
這種形式須要腳本擁有可執行權限,若是沒有,須要添加執行權限翻譯
Shell變量
Shell中的變量和Python中的變量相似,無需指定變量類型
變量命名
Shell中的變量必須以字母或者下劃線開頭,後面能夠跟數字、字母和下劃線,在shell中變量區分大小寫
變量賦值
Shell中變量的賦值十分簡單,直接「 變量名=變量值 」,尤爲要注意的是在shell中「=」號兩邊沒有空格
3d
變量的取值
在shell中要使用shell,直接調用變量名是得不到變量值的,須要在變量名面前加上 $ 符號,固然更加嚴謹的作法是使用: ${}
blog
局部變量
局部變量就是值在某個shell中生效的變量,不會影響其餘的shell
環境變量
環境變量又稱爲「全局變量」,在shell腳本中,默認變量就是全局的。
環境變量能夠用在建立變量的shell和從該shell派生的任意子shell或進程中。
在Bash中有不少的預設環境變量
取消變量
在shell中,對於已經定義好的變量,若是想取消這個變量,須要使用 unset 命令
Shell中還有一些特殊的變量,靈活使用這些特殊的變量,可讓shell腳本更加靈活
位置參數
Shell中有一些預先定義的特殊只讀變量,他們的值只有在腳本運行時才能肯定,位置參數就是其中的一種,$0表明腳本自己,$1表明第一個參數,依次類推
腳本或命令返回值:$?
在shell中,任何一個命令執行事後都會有一個返回值,這個返回值會指示上個命令的執行狀態,經過返回值就能夠知道上一個命令是否正確執行
Shell內建命令,就是由Bash自身提供的命令,而不是其餘地方提供的可執行文件
例如:cd
除了這些內建命令以外,常見的還有:echo exit export kill pwd 等