1. 程式人生 > >Linux操作系統基礎操作之shell腳本編寫

Linux操作系統基礎操作之shell腳本編寫

bubuko 文件 方式 處理程序 不成功 版本信息 必須 空白字符 方法

Shell腳本程序是Shell命令語句的集合,用於實現特定的功能;
Shell腳本程序保存在文本文件中,可以使用文本處理程序進行閱讀和編輯;
Shell腳本程序是由Shell環境解釋執行的,不需要在執行前進行編譯;
執行Shell程序時,Shell腳本文件需要具有可執行(x)的屬性

技術分享圖片

第一行要說明腳本使用的 shell 名稱
接著是腳本功能描述、版本信息等內容
每個功能程序段前做註釋說明

exit命令

exit 被用來結束一個腳本

成功的命令返回0, 而不成功的命令返回非零值, 非零值通常都被解釋成一個錯誤碼

腳本中的函數和腳本本身也會返回退出狀態碼 ,在腳本中,“ exit nnn”命令將會把 nnn退出碼傳遞給shell( nnn必須是十進制數, 範圍必須是0 - 255)

腳本執行方法

方法一:將 shell.sh 加上可讀與可執行 (rx) 權限,然後就能夠以 ./shell.sh 來執行了(即以絕對路徑來執行

技術分享圖片

方法二:在PATH加入腳本路徑,可直接執行

技術分享圖片

方法三:以 sh shell.sh 的方式直接執行即可

技術分享圖片

方法四:source(.) + 腳本文件名(文件無需可執行權限)

技術分享圖片

echo命令

echo [-ne][字符串]
說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號。
常用選項:
-n 不需要在最後自動換行
-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:
\a 發出警告聲;
\b 刪除前一個字符;
\n 換行且光標移至行首;
\t 插入tab;

技術分享圖片

read命令

read [-p 提示字符串 鍵盤輸入信息] [-t 等待秒數] 變量名 用戶與腳本的交互
eg: [root @swh swh] read name
mytest #該行是用戶輸入的
[root @swh swh] echo $name
mytest #該行是系統響應的

技術分享圖片

腳本數據類型定義

字符

字符串

整數

數組結構 使用方法為${array[index]},下標index從0開始計數

類型聲明指令declare
格式:declare [-iafrx] var
i、a、f、r、x分別用來聲明整數、數組、函數、只讀類型變量和環境變量。
只讀型變量不可修改和刪除
默認情況下是字符和字符串類型
腳本語言是弱類型語言,使用變量的時候無需首先聲明其類型。

數值運算

var=$(( 運算內容)) [+、-、*、/、%]
declare -i total=$firstnu*$secnu

技術分享圖片

條件測試

條件測試使用方式:
test expression 或
[□expression□] 或
[[□expression□]]
說明:“test”和”[“ 均為命令,”[[”是關鍵字,上面的形式中的□為空格,必須

ls /tmp/tt && echo “exist” || echo “not exist”
ls /tmp/tt || echo “not exist” &&echo “exist”
command1 && command2 || command3
如果1可以執行,就執行2,若1不可以執行,就執行3

test命令

特定參數實現對文件或數據的多種判斷操作 返回true或false

eg: test -e /tmp/test.txt && echo “exist” || echo “not exist”
判斷文件test.txt是否存在並告知用戶
test -r godisagirl -a -x godisagirl
當godisagirl的權限為可讀可執行時返回true

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

判斷符號[ ]

判斷符號[ ]也可以實現上述功能,在[ ]中出現的內容就是test指令的各個選項
在[ ]中的每個組成部分間必須用空格分隔
eg: [root @swh swh]# [ -n $PATH ]
這裏每個組件間都有空格,用來判斷變量$PATH是否為空
[ ]之間可以用&&或|| 結合
name=“ccyx”
[ $name == “cyx”]
[ “$name” == “cyx”]

技術分享圖片

技術分享圖片

條件判斷

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

函數

技術分享圖片

技術分享圖片

循環

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

break與continue命令

break命令用來跳出循環
continue命令只會跳過本次循環, 忽略本次循環剩余的代碼, 進入循環的下一次叠代
break命令可以帶一個參數. 一個不帶參數的break命令只能退出最內層的循環, 而break N可以退出N層循環

調試腳本

利用sh指令
sh [-nvx] scripts.sh
-n:查詢並指出語法錯誤並不執行
-v:執行腳本前顯示腳本內容至屏幕
-x:只將用到的腳本內容顯示出來

Linux操作系統基礎操作之shell腳本編寫