shell本身是一種用c語言編寫的程式,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。
【shell分類】
linux的shell種類眾多,常見的有:bourne shell(/usr/bin/sh或/bin/sh)、bourne again shell(/bin/bash)、c shell(/usr/bin/csh)、k shell(/usr/bin/ksh)、shell for root(/sbin/sh),還有zshell等等。不同的shell語言的語法有所不同,所以不能交換使用。每種shell都有其特色之處,基本上,掌握其中任何一種 就足夠了。我們關注的重點是bash,也就是bourne again shell,由於易用和免費,bash在日常工作中被廣泛使用;同時,bash也是大多數linux系統預設的shell。在一般情況下,人們並不區分 bourne shell和bourne again shell,所以,在下面的文字中,我們可以看到#!/bin/sh,它同樣也可以改為#!/bin/bash。
編寫shell指令碼的格式是固定的,如下:
#!/bin/sh
#comments
your commands go here
首行中的符號#!告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的shell程式。
如果首行沒有這句話,在執行複雜指令碼檔案的時候,將會出現報錯。後續的部分就是主程式,除第 一行外,以#開頭的行就是注釋行,直到此行的結束。
chmod a+x filename.sh
執行指令碼的方法是:
./filename.sh 或者
bash filename.sh
【變數使用】
下面我們從經典的「hello world」入手,看一看最簡單的shell指令碼的模樣。
#!/bin/sh
#print hello world in the console window
a = "hello world"
echo $a
注:shell script是一種弱型別語言,使用變數的時候無需首先宣告其型別。
新的變數會在本地資料區分配記憶體進行儲存,這個變數歸當前的shell所有,任何子進 程都不能訪問本地變數。這些變數與環境變數不同,環境變數被儲存在另一記憶體區,叫做使用者環境區,這塊記憶體中的變數可以被子程序訪問。
如果對乙個已經有值的變數賦值,新值將取代舊值。取值的時候要在變數名前加$,$variable_name可以在引號中使用,這一點和其他高階語言是明顯不同的。如果出現混淆的情況,可以使用花括號來區分,例如:
#!/bin/bash
echo "hi, $as" #就不會輸出「hi, hello worlds」,而是輸出「hi,」。這是因為shell把$as當成乙個變數,而$as未被賦值,其值為空。
正確的方法是:
echo "hi, $s"
注:單引號中的變數不會進行變數替換操作。
【環境變數】
env用於顯示使用者環境區中的變數及其取值;如列印環境變數:
>printenv #注意是緊挨一起的
set用於顯示本地資料區和使用者環境區中的變數及其取值;
>set #直接輸入set即可輸出顯示本地資料區和使用者環境區中的變數
unset用於刪除指定變數當前的取值,該值將被指定為null;
>unset a #刪除環境變數a
export命令用於將本地資料區中的變數轉移到使用者環境區。
>echo $path #列印出path中環境變數
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
>export path=$path:/bin/bash #將/bin/bash環境變數新增到原有path中
>echo $path #再次列印出path中環境變數,/bin/bash已新增到path中
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin/bash
>export lang=zh_cn.utf-8 #將lang環境變數設定中文支援
認識shell和bash的環境變數
引言 在unix作業系統開發中,shell是我們經常需要使用的乙個應用程式。一般地,我們經常使用shell來執行命令或者某個程式。但是什麼是shell,以及我們經常配置bash的環境變數又是怎麼一回事。關於shell 只要能夠操作應用程式的介面都能夠稱為shell。狹義的shell指的是命令列的軟體...
shell基礎認識
shell 我們在終端下寫命令linux核心是看不懂的必須通過shell解釋成核心可執行的 這就是shell 其實解釋命令這只是它的乙個功能模組,shell還可以用來進行程式設計 有點類似window下 bat檔案可以用來對系統的操作 將。bat檔案放在c盤中的啟動檔案中一開機就執行.bat檔案 x...
shell基礎認識
shell基礎認識 我們在終端下寫命令linux核心是看不懂的必須通過shell解釋成核心可執行的 這就是shell 其實解釋命令這只是它的乙個功能模組,shell還可以用來進行程式設計 有點類似window下 bat檔案可以用來對系統的操作 將。bat檔案放在c盤中的啟動檔案中一開機就執行.bat...