Shell指令碼基礎知識

2021-08-13 04:00:13 字數 3786 閱讀 6734

shell 變數

命名規則:

首字元為字母

中間不能有空格,可用下劃線

不能使用標點和bash的關鍵字

賦值:

顯示命名(不能加$)、語句賦值

唯讀變數:

readonly variable_name

刪除變數:

unset varible_name 不能刪除唯讀變數

shell字串

字串可以用單引號、雙引號、不用引號,其中雙引號中可以顯示變數、轉義字元

獲取字元長度

提取子字串

shell 引數傳遞0執

行檔名

n 第n個入參,其中n為1.2.3…

# 入參個數

* 入參合為字串 @以

" 1」 「2"

..."

n」顯示入參

shell陣列

語法格式: array_name=(value1 … valuen)

讀取陣列: ar

rayn

ame[

inde

x]獲取

第ind

ex個元

素 、ar

rayn

ame[

@]獲取

陣列所有

元素、$ 獲取陣列長度

shell基本運算子

原生bash不支援數**算,可使用awk、expr命令實現

注意:表示式和運算子之間要有空格,完整的表示式要被反引號包含

算術運算子:

+ - * / % = == !=

注: 乘號*前必須加反斜槓,條件運算必須有括起來,而且中間要有空格

eg:expr $a + $b

關係運算子:

關係運算子支援陣列,不支援字串,除非字串的值是數字

-eq :檢測兩個數是否相等 [ a−

eqb ]

-ne :檢測兩個數是否不相等

-gt :檢測左邊數是否大於右邊

-lt :檢測左邊數是否曉瑜右邊

-ge :檢測左邊數是否大等於右邊

-le:檢測左邊數是否小等於右邊

布林運算子:

! 非運算

-o 或運算 [ a−

lt20−

o b -gt 100 ]

-a 與運算

邏輯運算子:

$$ 邏輯運算and

|| 邏輯運算or [[ $a -lt 20 || $b -gt 100 ]]

檔案測試符:

-b file 檢測檔案是否是塊裝置檔案

-c file 檢測檔案是否是字元裝置檔案

-d file 檢測檔案是否是目錄

-f file 檢測是否是普通檔案

-g file 檢測檔案是否設定sgid

-k file 檢測檔案是否設定了粘著為

-p file 檢測檔案是否有名管道

-u file 檢測檔案是否設定了suid

-r file 檢測檔案是否可讀

-w file 檢測檔案是否可寫

-x file 檢測檔案是否可執行

-s 檢測檔案是否為空(檔案大小小於0)

-e 檢測檔案或目錄是否存在

shell echo命令

命令格式:

echo string

echo 「this is a string」 顯示普通字元

echo 「\」」 顯示轉義

read name 從標準輸入中讀取一行,並輸入給每個字段指定給shell變數

echo 「$name 「顯示變數

echo -e 「abc \n」 #-e開啟轉義 顯示換行

echo -e 「abc \c」 顯示不換行

echodate顯示命令執行結果

printf命令

命令語法:

printf format-string [arguments…]

fomat-string :為格式控制字串

arguments:為引數類別

eg:

printf 「%-10s %-8s %-4.2f」 a b 4444.22

test命令

test 命令用於檢查某刻命令是否成立,可以對數值,字元,檔案進行測試

shell流程控制

if 語句格式

if condition1

then

command1

elif condition2

then

command2

else

command3

fi

for迴圈格式

for var in item1 item2 ... itemn

docommand1

command2

...commandn

done

while語句

while condition

docommand

done

無限迴圈

while :

docommand

done

或者

while

true

docommand

done

或者

for (( ; ; ))
until迴圈

until condition

docommand

done

case語句格式

case 值 in

模式1)

command1

command2

...commandn

;;模式2)

command1

command2

...commandn

;;esac

取值

為變數或嘗試,當匹配發現取值符合模式後,執行其中命令直至;;

使用 * 捕獲值

跳出迴圈:

break 跳出迴圈

continue 跳出當次迴圈

shell函式

[ function ] funname [ ( )

]

函式返回值在呼叫該函式後通過 $? 獲得

shell輸入/輸出重定向

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之間的內容作為輸入

unix/linux命令執行:

標準輸入檔案(stdin): stdin的檔案描述符為0,unix程式預設從stdin讀取資料

標準輸出檔案(stdout):stdout的檔案描述符為1,unix程式預設向stdout輸出資料

標準錯誤檔案(stderr):stderr的檔案描述符為2,unix程式會向stderr流寫入錯誤新

shell指令碼基礎知識

自定義shell變數時,變數有什麼規格?可以使用字母,數字,下劃線,不能以數字開頭 變數名區分大小寫 賦值時等號兩邊不要有空格 不要使用關鍵字或特殊字元,給同乙個變數多次賦值時,最後一次生效。簡述預定義變數 0 的作用?儲存當前執行的程式pid號 上乙個執行命令的返回狀態 0 當前執行的指令碼名 位...

shell指令碼基礎知識

雖然現在能在linux系統下生存,但是自覺效率太低,和高手有很大的差距。這就是關於linux的知識太過匱乏,有很多事情知道該怎麼做,但是就是沒法在linux下實現,為了提公升工作效率,必須要接觸linux高階技巧 linux的東西比較深,沒法一下學完,所以只要能掌握生信必備的基礎就好了。一些主要的流...

shell指令碼的基礎知識

shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務,是指令碼中命令的直譯器。1.記錄命令執行的過程和執行邏輯,以便以後重複執行 2.指令碼可以批量處理主機 3.指令碼可以定時處理主機 bin bash 幻數 vim自動新增指令碼首部 1 手動在環境中開...