認識shell及其變數

2021-07-23 22:22:08 字數 2146 閱讀 6635

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...