shell指令碼之程式設計規範與變數 vnvb的部落格

2022-09-23 05:39:06 字數 2677 閱讀 4202

shell指令碼概念

將要執行的命令按順序儲存到乙個文字檔案,給該檔案乙個可執行許可權,便可執行。

shell指令碼的構成

1、指令碼申明

指令碼宣告是指明用哪個直譯器來解釋

2、注釋資訊

注釋資訊是指明這個指令碼的一些說明資訊。就知道這個指令碼時幹什麼用的了,這個資訊不執行

3、可執行語句

進行執行的一些命令

執行shell指令碼的方式

1、絕對路徑

2、相對路徑

3、sh 指令碼路徑

4、source 指令碼路徑

注意:其中,絕對路徑與相對路徑實行shell指令碼時,該指令碼檔案必須要有可執行許可權。source指令碼路徑的方法,只在當前環境生效。

管道操作符 「|」

將左側的命令輸出結果,作為右側命令的處理物件統計passwd中的行數 cat /etc/passwd | wc –l 過濾檢視passwd中wang的使用者 cat /etc/passwd | grep 「wang」

重定向(三種型別)

1、標準輸入(/dev/stdin)

鍵盤輸入的資料就是標準輸入

2、標準輸出(/dev/stdout)

顯示器輸出的資料就是標準輸出

3、標準錯誤(/dev/stderr)

顯示器上顯示錯誤資訊就是標準錯誤

4、重定向輸入

先建立乙個mima.tx文字,然後重定向給某個使用者作為密碼 pass 使用者名稱 < mima.txt

注:密碼要求必須符合系統預設要求,否則會報錯密碼更改終止。

5、重定向輸出

1)把指定路徑下的檔案或者直接輸入的文字重定向輸入到指定檔案

echo "wo zui shuai " > test.txt

注:這裡不需要提前建立檔案,因為當重定向輸出時,未檢測到該名

2)檔案便會建立,建立格式自己指定即可,如:test.txt test.log test.bak

3)重定向追加,將輸出文字或者內容追加到指定的文字內容之後echo "da jia dou shuai " >> test.txt

注:這樣就會不影響該文字原有的內容,還能新增上新內容,只不過是在原內容之後。

6、標準錯誤輸出

1)當查詢不存在的檔案或者目錄時會提示,無法訪問,沒有那個檔案或目錄。shell指令碼之程式設計規範與變數

2)使用重定向將以上截圖報錯資訊輸出到err.txt文字中(預設沒有這個文字)shell指令碼之程式設計規範與變數

3)輸出報錯資訊需要使用2>才能輸出shell指令碼之程式設計規範與變數

7、混合輸出

同時輸出兩種以上不同的輸出,比如同時輸出錯誤輸出和標準輸出shell指令碼之程式設計規範與變數

自定義變數(由使用者自己定義、修改和使用)

1)定義x等於123,這裡使用echo命令shell指令碼之程式設計規範與變數

2)繼續上一步操作並顯示新新增的456shell指令碼之程式設計規範與變數 注:以上截圖中的引號中兩個數值之間有空格,反之不顯示,會失敗。

3)如果想實現123456這樣連續輸出的話,操作如下兩種(括號不同)shell指令碼之程式設計規範與變數

4)計算加減乘除使用expr命令,直接加法如下格式shell指令碼之程式設計規範與變數

5)使用變數計算加法如下格式shell指令碼之程式設計規範與變數

6)將命令設成變數檢視統計系統所有使用者數shell指令碼之程式設計規範與變數

定義變數和輸出

1、輸入格式

read 【-p 「提示資訊」】變數名shell指令碼之程式設計規範與變數 注:這裡的懶寶寶是變數,而且是通過輸入方式新增變數並先給予變數名x

2、使用兩個變數相加,通過expr命令實現shell指令碼之程式設計規範與變數

8、變數的算數運算

變數的數值多用於指令碼程式的過程控制,只能進行簡單的整數運算,不支援小數運算,整數值的運算主要通過內部命令expr進行。格式:expr 變數1 運算子 變數2 運算子 ...

1、使用expr命令實現加減算數運算shell指令碼之程式設計規範與變數

2、使用expr命令實現乘除算數運算(包括餘數)shell指令碼之程式設計規範與變數 注:從上邊的截圖中可以看見,乘法需要使用轉義符\,才能識別進行運算;而除法應該是3.7.0…因為只能取整數,所以取3;而由123除以456答案應該是小數,但是卻等於0,原因是這個命令不支援小數;最後計算456除以123的餘數為87

9、預定義變數

預定義變數是bash程式預先定義好的一類特殊變數,使用者只能使用預定義變數,而不能建立新的預定義變數,也不能直接為預定義變數賦值。

$0 這個程式的執行名字

$n 這個程式的第n個引數值,n=1..9

$* 這個程式的所有引數,此選項引數可超過9個。

$# 這個程式的引數個數

$$ 這個程式的pid(指令碼執行的當前程序id號)

$! 執行上乙個背景指令的pid(後台執行的最後乙個程序的程序id號)

$? 執行上乙個指令的返回值 (顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)

$- 顯示shell使用的當前選項,與set命令功能相同

$@ 跟$*類似,但是可以當作陣列用

10、環境變數

環境變數指的是出於執行需要而由linux系統提前建立的一類變數,主要用於設定使用者的工作環境。使用env命令可以檢視到當前工作環境下的環境變數。path變數用於設定可執行程式的預設搜尋路徑。環境變數的全域性配置檔案為/etc/profile,每個使用者還有自己的獨立配置檔案~ /.bash_profile

Shell程式設計規範與變數

shell的作用 編寫第乙個shell指令碼 重定向與管道操作 shell變數的作用 型別 自定義變數 特殊的shell變數 shell指令碼就是將要執行的命令按順序儲存到乙個文字檔案,並給該檔案可執行許可權,方便一次性執行的乙個程式檔案。主要是方便管理員進行設定或管理,可結合各種shell控制語句...

Shell程式設計規範與變數

shell指令碼的概念 將執行的命令按順序儲存到乙個文字檔案 給該檔案可執行許可權 可結合各種shell空值語句已完成更複雜的操作 shell指令碼應用場景 重複性操作 互動性任務 批量事務處理 服務執行狀態監控 定時任務執行 什麼是 shell指令碼 呢?簡單的說,只要將平時使用的各種linux命...

Shell程式設計規範與變數

四 重定向與管道操作 五 read使用語法 六 shell變數的作用,型別 七 shell變數賦值 八 linux中的運算 九 特殊的shell變數 什麼是shell指令碼?簡單來說,只要將平時使用的各種linux命令按順序儲存到乙個文字檔案中,然後新增可執行許可權,這個檔案就成了乙個shell指令...