Linux下Shell程式設計之必背必記 一

2021-08-03 22:26:47 字數 2109 閱讀 9521

1.shell常用特殊變數含**釋

$# 傳入shell指令碼的引數個數

$? 最後執行命令的結束碼(0表示:成功執行 非0表示:執行過程中出現異常或非正常退出)

狀態碼:

0命令成功結束

1通用未知錯誤

2誤用shell命令

126命令不可執行

127沒找到命令

128無效退出引數

128+x

linux訊號x的嚴重錯誤

130linux訊號2的嚴重錯誤,即命令通過sigint(ctrl+c)終止

255退出狀態碼越界

$$ shell本身的pid(即processid)

$! shell最後執行的後台processid

$* 所有的引數列表 

$@ 所有的引數列表 沒看出和$*有什麼區別,都是以"$1" "$2" ... "$n"的形式輸出所有引數

$0 shell本身的檔名

$- 使用set命令設定的flag一覽

$1 - $n 新增到shell的各個引數值,$1是第乙個引數、$2是第二個引數...

2.shell數值、字串、檔案的比較

數值比較:

-eq 等於

-ne 不等於

-gt 大於

-ge 大於等於

-lt 小於

-le 小於等於

以上長和test命令一起使用,如:

#!/bin/bash

value1=8

if [$value1 -gt 6] 

then

echo "$value1 is greater than 6"

fi字串比較: =等於

!=不等於

<

小於》大於-n str  檢查str的長度是否非0

-z str  檢查str的長度是否為0 

檔案比較:

-d file 檢查file是否存在並是乙個目錄

-e file 檢查file是否存在

-f file 檢查file是否存在並是乙個檔案

-r file 檢查file是否存在並可讀

-s file 檢查file是否存在並非空

-w file 檢查file是否存在並可寫

-x file 檢查file是否存在並可執行

-o file 檢查file是否存在並屬當前使用者所有

-g file 檢查file是否存在並且預設組與當前使用者相同

file1 -nt file2 檢查file1是否比file2新

file1 -ot file2 檢查file1是否比file2舊

3.bash shell提供了兩項可在if - then語句中使用的高階特性

3.1 用於數學表示式的雙括號

雙括號命令符號:

val++  後增

val-- 後減

++val 先增

--val 先減

! 邏輯求反

~ 位求反

** 冪運算

<< 左位移

>>右位移

& 位布林和

| 位布林或

&& 邏輯和

|| 邏輯或

#!/bin/bash

value1=8

if (( $value1 ** 2 > 60 )))

then

(( value2=$value ** 2))

echo " the square of $value1 is $value2 !"

fi3.2 用於高階字串處理功能的雙方括號

#!/bin/bash

if [[ $username == bi* ]]

then

echo "hi $username !"

else 

echo "$username is not existed !"

fi雙方括號提供了test命令未提供的另乙個特性,即模式匹配。

雙等號將右邊的字串 bi* 視為乙個模式,並應用模式匹配規則。上面示例表示雙方括號命令$username環境變數進行匹配,看它是否以字母r開頭,

如果是,執行then後**塊,否則執行else後**塊。

參考資料 《linux命令列與shell指令碼程式設計大全(第三版)》

Shell程式設計 Linux系統環境程式設計之路

函式 別的高階語言都有函式的感念,當然shell程式設計也有這個概念,當寫乙個比較大型的shell程式的時候,如果沒有函式,則會到處都是重複的 當然也可以呼叫別的指令碼,但是速度會比較慢。所以函式是必不可少並且非常重要的乙個東西。定義函式的格式 function name 例子 fun s show...

Linux學習 shell程式設計之變數

shell程式設計之變數 linux shell程式設計基礎中的變數。包括bash變數的分類和各變數的詳細使用,如 使用者自定義變數 環境變數 語系變數 位置引數變數和預定義變數。1 什麼是bash變數?變數 計算機記憶體單元,其中存放的值可以更改!bash變數就bash中的變數2 變數有哪些分類,...

Linux下的shell程式設計

前提 shell環境pdksh和bash ubuntu下預設的shell環境是bash 語法篇 一 變數 1.變數分為三種型別 環境變數 內部變數和使用者變數 其中環境變數和內部變數不需要使用者定義,可以直接使用。環境變數 由系統定義,使用者不需要定義但可以改變變數的值。內部變數 由系統提供的一種特...