shell是解釋型的編程語言
解釋型腳本文件的執行過程:
當執行一個解釋型的腳本文件是時,腳本文件會被提交到內核。內核看到第一行定格寫的“#!”時,就會調用“#!”後面跟的解釋器,啓動一個解釋器進程,並把該文件的後續內
容交給解釋器翻譯給CPU執行。腳本後續內容執行完畢後,解釋進程將會隨之結束。
shell腳本書寫規範:
第一行:#!/bin/bash 必須定格書寫
#author: movekj 腳本作者
#date: 書寫日期
#version:0.0.1 版本號
#description: bash scription 腳本功能描述
shell腳本編程是一門過程式的編程語言,有以下三種執行流程:
順序執行:從文件的第一條語句開始一條一條向後執行
選擇執行:根據給出的條件,選擇性的執行
循環執行: 重複的執行循環體中的語句
變量:
本地變量:只對當期進程有效
var_Name=value
環境變量:對當前進程及其自進程有效
export var_Name=value
局部變量:在代碼塊中有效(通常用於函數中)
local var_Name=value
位置變量:$0、$1、$2...$n
特殊變量:
$#:表示腳本參數的個數
$?:表示上一條命令的執行狀態(0表示執行成功,非零表示執行失敗)
$*:表示腳本的參數列表
$@:表示腳本的參數列表
變量賦值:
var_Name=value
declare [option] var_Name=value
shell腳本中常見的符合及其意義:
`COMMAND`(反撇號):表示命令引用,引用命令的執行結果
" "(雙引號):弱引用,其中有$加變量名時,會做變量替換
' '(單引號):強引用,其中有$加變量名時,不會做變量替換
循環語句:(有以下常見的三種)
for循環:遍歷列表,遍歷到列表最後一個參數時,退出循環。
for var_Name in LIST
do
循環體
done
LIST的生成方式:
1、seq命令
seq [star] [步進] [end]
2、{..}
3、直接鍵入參數以一個或多個空格隔開
while循環:當條件不滿足condition時,退出循環。
while condition
do
循環體
done
until循環:當條件滿足condition時,退出循環。
while condition
do
循環體
done
選擇語句:
if語句:
單分支:
if COMMAND
then
選擇分支
fi
雙分支:
if COMMAND
then
選擇分支1
else
選擇分支2
fi
多分支:
if COMMAND
then
選擇分支1
elif COMMAND
then
選擇分支2
elif COMMAND
then
選擇分支3
...
else
選擇分支n
fi
case語句:
case var_Name in
)
;;
)
;;
)
;;
esac
shell條件測試
字符比較:
>、<、>=、<=、==、!=
-z:測試變量是否爲空
-n:測試變量是否不空
數字比較:
-gt、-lt、-ge、-le、-eq、-ne
文件測試:
算數運算
運算符合:+、-、*、**(乘方)、/、%(取模/取餘)
let var_Name=EXPR
let I++ --> let I=$I+1
let I+=2 --> let I=$I+2
let I-=2 --> let I=$I-2
其它符合以此類推
expr AGR1 + AGR2 ...
$[EXPR]
$((EXPR))
expr AGR1 + AGR2 ...