shell指令碼命令格式注意點

2022-08-23 09:12:11 字數 2544 閱讀 7019

1、大部分的linux系統預設配置

bash

。對比sh

,bash

擴充套件了一些命令和引數,並且保留對

sh的一些相容

。除了bash、sh

還有csh

(語法類似

c語言)、

tcsh

(csh

公升級版)、

ash(適合低記憶體環境)

2、指令碼開頭 #!/bin/sh , #!必須有,後面跟上的是

shell

的路徑3、變數賦值和取值

(1) bash shell 在預設情況下不會區分變數型別,即使你將整數和小數賦值給變數,它們也會被視為字串,這一點和大部分的程式語言不同。

variable=value  注意:賦值號左右不能留空格

(2) $後面跟上變數表示讀取變數裡面的值,特殊情況可以加上{}表示變數的邊界

輸出結果:

(3) 單引號和雙引號的區別:以單引號' '包圍變數的值時,單引號裡面是什麼就輸出什麼,即使內容中有變數也會把它們原樣輸出,雙引號內的變數才會取值輸出

輸出結果:

4、linux命令結果賦值:用反引號(

esc下面、

tab上面的點)表示

輸出結果:

5、運算子:

(1) expr :後面跟上需要運算的演算法,需要用反引號,每個引數間要有空格

(2) $((  )): 演算法要有空格

(3) let: 演算法

不能有空格

輸出結果:

6、陣列定義

(1)或者

(2) 取值:

7、if...else...if: 和常用程式語言的區別在於結束是用

fi表示,每個條件後面要加上

then

,(1) 方括號([ ])內的引數之間必須有空格

(2) 多條件判斷

8、 case ... esac :類似其他語言的

switch ... case

,case

工作方式如上所示。取值後面必須為關鍵字

in,每一模式必須以右括號結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。

;; 與其他語言中的

break

類似,意思是跳到整個

case

語句的最後。

9、while 迴圈

10、shell 函式

:可以將可能重複用到的命令封裝成乙個函式,函式可以帶返回值,函式內用

return

返回,函式外用

$?接收返回值。

shell

函式返回值只能是整數,一般用來表示函式執行成功與否,

0表示成功,其他值表示失敗。如果

return

numeric argument required

」。如果有需要返回其他型別的值,可以在外部定義乙個變數,來接受結果。

11、引數:shell指令碼可以帶引數,在指令碼中,通過

$n 的形式來獲取引數的值,例如,

$1表示第乙個引數,

$2表示第二個引數

」井號表示注釋

13、特殊字元

特殊變數

說明$#

傳遞給函式的引數個數。

$*顯示所有傳遞給函式的引數

$?函式的返回值。

$0當前指令碼的檔名

$$當前shell

程序id

-eq檢測兩個數是否相等,相等返回 true

。-ne

檢測兩個數是否相等,不相等返回 true

。-gt

檢測左邊的數是否大於右邊的,如果是,則返回 true

。-lt

檢測左邊的數是否小於右邊的,如果是,則返回 true

-ge檢測左邊的數是否大等於右邊的,如果是,則返回 true

。-le

檢測左邊的數是否小於等於右邊的,如果是,則返回 true

shell指令碼 命令

命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...

shell指令碼命令

1.建立檔案 home test test.log rootdir home test testfile rootdir test.log touch testfile 2.如果檔案存在則刪除檔案 if f testfile then rm rf testfile fi3.如果檔案不存在則建立檔案 ...

shell指令碼注意點

1.等號兩邊不能有空格,例如 獲取七天前的日期 before 7 day date d 7 days ago y m d 2.自定義函式只能返回數值,不能返回陣列 字串等內容。如果需要生成字串等結果,可以宣告為全域性變數,然後將值賦給全域性變數,這樣就可以在函式外訪問 get string 返回錯誤...