標籤:version 程式設計語言 解譯器 版本號碼 選擇性
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表示執行成功,非零表示執行失敗)
$*:表示指令碼的參數列表
[email protected]:表示指令碼的參數列表
變數賦值:
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 ...
shell指令碼編程基礎*