shell指令碼程式設計基礎

2022-07-10 02:24:10 字數 3017 閱讀 1968

最近學習了shell指令碼程式設計,感覺自己的指令碼寫的不太好,所以想把shell指令碼相關的知識系統的整理一下,便於以後的學習和使用。

shell指令碼是利用shell的功能所寫的乙個程式,這個程式是使用純文字檔案,將一些shell的語法與指令寫在裡面,然後用正規表示式,管道命令以及重定向向等功能,以達到我們所想要的處理目的。它的基本用途有:

1.自動化常用命令

2.執行系統管理和故障排除

3.建立簡單的應用程式

4.處理文字或檔案

...

第一行必須包括shell 宣告序列:#! 也就是我們通常所說的「蛇棒」,如:`#!/bin/bash` 

新增注釋,注釋以#開頭,注釋行會被直譯器忽略。

第二步、執行指令碼

給予執行許可權,在命令列上指定指令碼的絕對或相對路徑

直接執行直譯器,將指令碼作為直譯器程式的引數執行

指令碼示例:

#!/bin/bash

# ------------------------------------------

# filename: hello.sh

# revision: 1.0

# date: 2017/09/16

# author: fly

# email:

# description: this is the first script

# ------------------------------------------

echo 「hello world」

1.檢測指令碼的語法錯誤

bash -n /path/to/some_script

只檢測,不執行指令碼,並且不能檢測指令碼的邏輯錯誤

2.除錯執行

bash -x /path/to/some_script

逐行執行指令碼,便於直接判斷指令碼錯誤,但可能會有些不安全

自定義變數

根據變數的生效範圍,將自定義變數分為:

本地變數: 僅對當前shell有效,對子shell也無效

環境變數:對當前shell及其子shell均有效。

區域性變數:生效範圍為當前shell、程序中某**片斷( 通常指函式)

使用自定義變數前,我們需要對變數進行賦值,下面是變數命名規則:

1)使用變數無需事先宣告

2)首個字元必須為字母(a-z,a-z)

3)中間不能有空格,可以使用下劃線(_)

4)不能使用標點符號

5)不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)

6)需要給變數賦值時,可以這麼寫:

7)變數名=值

8)取乙個變數的值,只需在變數名前面加乙個$ ( 注意: 給變數賦值的時候,不能在"="兩邊留空格 )

例:

a=1 (本地變數)

export b=2(環境變數)

local c=3(區域性變數)

使用變數結束後,可以用unset name刪除自定義變數

位置變數

位置變數:在指令碼**中呼叫通過命令列傳遞給指令碼的引數

$1, $2, ... :對應第1 、第2 等引數,shift [n] 換位置

$0: 命令本身

$*: 傳遞給指令碼的所有引數,全部引數合為乙個字串

$@: 傳遞給指令碼的所有引數,每個引數為獨立字串

$#: 傳遞給指令碼的引數的個數

$@ $*只在被雙引號包起來的時候才會有差異

可以用set --清空所有位置變數

特殊變數

變數含義

$?變數儲存最近的命令退出狀態

$0當前指令碼的檔名

$#傳遞給指令碼或函式的引數個數

$*/$@

傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,$@與$* 稍有不同

$$當前shell程序id,對於 shell 指令碼,就是這些指令碼所在的程序id

請看下面指令碼:

#!/bin/bash

echo "file name: $0"

echo "first parameter : $1"

echo "first parameter : $2"

echo "quoted values: $@"

echo "total number of parameters : $#"

執行結果:

./test.sh a b  

file name : test.sh

first parameter : a

second parameter : b

quoted values: a b

total number of parameters : 2

算數運算

let運算命令

#!/bin/bash

a=2;

b=3;

let sum=a+b

echo $sum

[ ]運算方法
#!/bin/bash

a=2;

b=3;

sum=$[a+b]

echo $sum

(( ))運算方法
#!/bin/bash

a=2;

b=3;

sum=$((a+b))

echo $sum

expr運算方法
a=1

b=2sum=$(expr $a + $b)

echo $sum

精密計算
echo "1*2*3"|bc
今天對shell指令碼就介紹到這裡,下次繼續對shell指令碼進行整理,再見。

shell 程式設計 shell 指令碼基礎

shell 是乙個命令直譯器,它在作業系統的最外層,負責直接與使用者進行對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出到螢幕反饋給使用者。把 linux 命令或語句放在乙個檔案中,通過這個程式檔案去執行,這個程式為 shell 指令碼或 shell 程式 可以在指令碼中...

shell指令碼程式設計基礎

1.使用多個命令 2.建立shell指令碼檔案 shell指令碼中注釋一般以 開頭,shell指令碼不會處理注釋的行。但是,shell指令碼的第一行是例外。後的 會告訴shell用哪個shell來執行指令碼,shell會根據命令在檔案 現的先後順序進行處理。下面是建立指令碼名為demo的檔案。bin...

shell指令碼程式設計基礎

建立檔案,為檔案新增可執行許可權 chmod x file 格式 在檔案的第一行指定所使用的shell bin bash 注釋 開頭的命令 首行的 bin bash 除外 顯示訊息 echo命令 預設情況下不需要加引號,若需要顯示的字串中含有單引號或雙引號中的一種,可使用另一種將字串引起來以示區別。...