shell指令碼 程式設計原理

2022-05-20 01:56:00 字數 1956 閱讀 4222

1、shell指令碼語言介紹

優點:呼叫os(作業系統)的命令列,來實現所有功能

缺點:沒有庫呼叫(區分python)

變數:全域性變數、區域性變數、本地變數、傳參

/etc/shells/ --檢視當前系統支援的shell程式

echo $shell -- 檢視當前會話的shell程式

/etc/passwd -- 制定了使用者預設支援的shell程式

shell的執行:

1)bash命令來執行指令碼

-n 檢視shell指令碼的邏輯錯誤(單詞查不出)

-x 逐行顯示執行的指令碼程式(方便排錯)

2)授權 chmod +x filename.sh

使用全路徑執行指令碼,即可./filename.sh

2、變數

環境變數($home、$shell、)    

區域性變數 declare命令 -- 定義變數型別

本地變數  local在函式中使用

變數型別:

數值型:int

整型、浮點型(float)、布林值(true/false)

字串:

1)普通字元及字串

2)陣列

程式語言的分類:

強型別語言 -- 數值必須被定義,才能進行處理或運算

弱型別語言 -- 程式語言可以自動識別變數型別

【多型--乙個資料具有多個屬性,而最後使用的屬性取決於和他進行運算事物資料】

傳參$? ---上一條命令執行狀態(0 正確 1-255錯誤)

$1 $2 .. $  --- 命令後面傳入指令碼的資料,以空格為分隔符

$# --- 統計傳參數量   $:表示傳參的最後乙個數

$*  --- 表示所有傳參,所有傳參以字串形式輸出

$@ --- 表示所有傳參,所有傳參以列表形式輸出

定義變數格式:

name=value(乙個等號是賦值,兩個等號是判斷)

我們通過命令declare定義變數型別:

declare -i 整數

declare -a 陣列

變數命令:

1)下換線方式指定變數型別

2)駝峰式命名方式

3、test文字測試、條件判斷

在指令碼中,我們需要進行語句分支;說白了,就是要做判斷

判斷就是使用test命令來實現;

使用格式:

1)test[option]file

2)[ 條件語句 ] :【 使用比較選項、判斷選項和關聯選項時用 】

常見的test選項:

比較選項:

-eq -ne -gt -lt -ge -le

判斷選項:

-f判斷是否為普通檔案

-d判斷是否為目錄檔案

-l判斷是否為連線檔案

-r -w -x判斷檔案是否具有讀寫執行許可權

關聯選項:

-o 或

-a 與

! 非字串判斷:

= 等於

!=不等於

-z 判斷字串長度是否存在(真)

-n 存在為假,不存在為真

4、邏輯運算

與:&&

或:||

非:!=

這個邏輯運算子,前後對接都是單獨存在的命令;

[ $? -eq 0 ]&& exit 0 || exit 1

5、算術運算

*let 1+1

let a=1+1

echo $a

expr 1*1

expr 1 * 10

*$[$1+10]

a=$[2+3]

echo $a

$(($1/$2))

a=$((3/2))

echo $a

+加 -減 *乘 /除 %取餘 **次冪

Shell 指令碼程式設計

1 執行shell的方法 指定shell bin sh 由sh執行指令碼 指令碼總是由sh解釋 顯示呼叫shell sh scriptname 在當前shell中執行指令碼 profile profile是可執行的 ksh profile profile是不可執行的 改變當前的執行環境責應輸入.pr...

Shell 指令碼程式設計

a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...

shell指令碼程式設計

今天看看shell程式設計,記錄下期中與想象中不一樣的地方 0.注釋用 1.shell的變數賦值 your name zhm 在your name和等號中間不能有空格,這和別的語言很不一樣,那麼在使用變數時和別的語言也不一樣,要使用 your name,一般要用 一定是大括號 2.那麼如何把乙個變數...