shell程式設計基礎知識總結

2021-10-05 12:42:43 字數 2700 閱讀 5240

目前用到shell的情況比較簡單,暫時總結一部分,日後用到時回顧補充

1. linux的預設shell是bash,shell指令碼開頭需要定義用哪種直譯器

例:#!/bin/bash

2. 執行方法

chmod +x test.sh

./test.sh

或/bin/sh test.sh

3. 變數

所有變數預設為字串,無論有沒有引號。

宣告:變數名不加$,變數名和等號之間不能有空格

使用:在變數名前加$,可用{}界定邊界 echo 「i am good at $script」

賦值:等於號,但涉及計算的需要用命令:

(()):雙小括號,整數運算子 

echo $(($a+2))

echo ((2>1)) 輸出1(真1假0)

((a=$b+1+2))

let:let val=$val+1

expr:

唯讀變數:readonly命令

myurl=""

readonly myurl

刪除變數:unset variable_name

讀取檔案:

cat test.txt | while read line

doecho $line

done

while read line

doecho $line

done < test.txt

4. 字串

建議使用雙引號,裡面可以出現變數和轉義字元

下列輸出相同:

greeting=「hello, 「$your_name」 !」

greeting_1=「hello, $ !」

長度:$

擷取:$

查詢:grep(返回查詢到的字串)、=~(判斷是否包含)

5. 陣列

只有一維陣列,定義:name=(val1 val2 val3 …)

長度:$

6. 運算子

7. 注釋

單行#,多行使用

:<8. 引數

呼叫時可以加上引數,按順序預設命名為$1,$2,…

$0是檔名

$#是引數個數

$$是指令碼執行的當前程序id號

$?是顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤

9. 輸出

echo或printf(printf同c,不加括號)

10. if test命令if test ...

then

...elif ...

then

...else

...fi

數值比較:

引數說明

-eq等於則為真

-ne不等於則為真

-gt大於則為真

-ge大於等於則為真

-lt小於則為真

-le小於等於則為真

字串:

引數說明

=等於則為真

!=不相等則為真

-z字串 字串的長度為零則為真

-n字串 字串的長度不為零則為真

檔案測試

引數說明

-e 檔名

如果檔案存在則為真

-r 檔名

如果檔案存在且可讀則為真

-w 檔名

如果檔案存在且可寫則為真

-x 檔名

如果檔案存在且可執行則為真

-s 檔名

如果檔案存在且至少有乙個字元則為真

-d 檔名

如果檔案存在且為目錄則為真

-f 檔名

如果檔案存在且為普通檔案則為真

-c 檔名

如果檔案存在且為字元型特殊檔案則為真

-b 檔名

如果檔案存在且為塊特殊檔案則為真

有for while until case break continue

for var in item1 item2 ... itemn

do ...

done

while [[ condition ]]

do ...

done

until [[ condition ]]

do ...

done

case val in

val1)

...;;

val2)

...;;

esac

命令

說明command > file

將輸出重定向到 file

command < file

將輸入重定向到 file

command >> file

將輸出以追加的方式重定向到 file

n > file

將檔案描述符為 n 的檔案重定向到 file

n >> file

將檔案描述符為 n 的檔案以追加的方式重定向到 file

n >& m

將輸出檔案 m 和 n 合併

n <& m

將輸入檔案 m 和 n 合併

<< tag

將開始標記 tag 和結束標記 tag 之間的內容作為輸入

shell程式設計 基礎知識

shell 是命令直譯器 系統預設的shell是 bash 檢視shell的分類 1 cat etc shells 2 chsh l 3 ls bin sh 用命令檢視環境變數 env 檢視所有環境變數 set 檢視所有變數 echo path 系統環境變數的目錄 user 系統當前使用者 home...

Shell指令碼程式設計01 基礎知識

shell指令碼與windows dos下的批處理相似,就是將各類命令預先放入到乙個檔案中,然後執行該檔案,便可以達到與批處理類似的功能,主要是方便管理員進行設定或者管理用的。換句話來說,shell指令碼是利用shell的功能所寫的乙個程式,這個程式使用純文字檔案,將一些shell的語法與指令寫在裡...

SHELL 基礎知識

1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...