Linux操作系統基礎操作之shell腳本編寫
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腳本編寫