9月13日,bash總結

bash是調用機器上命令程序文件進行編寫的。

外部命令由各應用程序提供

 

程序是由:指令(算法)+數據(數據結構)

 

面向過程

以指令爲中心,設計算法,數據服務於算法

面向對象

以數據爲中心,設計數據結構,程序服務於數據結構

bash的流程控制語句:

順序執行:逐個執行

選擇執行:按條件選擇多條中的一條執行

循環執行:按條件執行制定次數

 

變量:程序運行後有名字的內存空間,可反覆調用修改

本地變量:當前shell進程有效。

環境變量:在當前shell進程和其子進程都存在。被導出的本地變量

局部變量:某個函數執行過程中存在的。

位置參數變量:腳本中傳遞給腳本的參數,

特殊變量:

    $?(上一條命令執行結果),0爲真,1-255位假

    $*(),

    $@(),

    $#(),

    $$()

變量的值類型:

數值:整形和浮點型

字符:ASCII

bash是字符型的,弱類型的且無須事先聲明。

下面可以將變量聲明爲整數類型

declare –i name=5

let name=5

 

單引號:強引用,其內部的變量會保持原有字符

雙引號:弱引用,其內部變量會做替換成爲變量值

命令引用:`命令`,$(命令),引用命令的執行結果

 

命名方式:

本地變量

變量名=變量值,默認是字符型

環境變量:

export 變量名

declare –x 變量名

查看:env,printent,export

image

生命週期:

自動銷燬:shell進程終止會銷燬

手動銷燬:unset 變量名

 

腳本:是文本文件,由bash從中讀取進行執行。

啓動腳本:

1,bash 腳本名

2,先給執行權限 腳本名

 

shebang語法格式:第一行寫 #!/bin/bash,解釋器路徑

註釋:#內容

自定義狀態結果 exit 5,會終止當前進程。

 

有些時候,我們只想要狀態結果,不想要狀態內容,所以要把結果拋棄

/dev/null,會吞下所有傳來的數據然後丟棄。

/dev/zero,會吞下數據然後吐出一堆0.

 

測試表達式:

1,test 表達式。

image

2,表達式應該這樣  [ 表達式 ],如果和括號之間沒空格會報錯。

也可以寫成 [[ 表達式 ]],這叫關鍵字。

以下都是上面命令的參數

整數測試:

-gt:大於

-ge:大於等於

-lt:小於

-le:小於等於

-eq:相等

-ne:不等於

image


 

字符串測試:

>:大於

<:小於

==:等於

!=不等於

-z $a 是否爲空

-n $a 是否不空

=~:測試左側字符串是否被右側的模式所匹配

image

 

文件測試:存在性測試

-e(-a) $file:文件是否存在

-f $file:是否存在且爲普通文件

-d $file:是否存在且爲目錄

-h $file:是否存在且爲符號鏈接

-L $file:同上

-b $file:是否存在且爲快設備文件

-c $file:是否存在且爲字符設備文件

-S $file:是否存在且爲套接字文件

-p $file:是否存在且爲管道文件

image

 

權限測試:

-r $file:當前用戶對文件是否擁有讀權限

-w $file:當前用戶對文件是否擁有寫權限

-x $file:當前用戶對文件是否擁有執行權限

image

 

-u $file:當前用戶對文件是否擁有suid

-g $file:當前用戶對文件是否擁有:guid

-k $file:當前用戶對文件是否擁有sticky

image

image

 

-O $file:當前用戶對文件是否是文件的屬主

-G $file:當前用戶對文件是否是文件的屬組

image

 

$file1 –nt $file2 :比較修改時間戳哪個接近當前時間

$file1 –ot $file2 :比較修改時間戳哪個遠離當前時間

$file1 –ef $file2 :比較兩個文件是否執行同一個inode

image

 

組合測試條件:

與:[[ 條件1 –a 條件2 ]]

或:[[ 條件1 –o 條件2 ]]

非:[ !條件 ]

每一個條件是指表達式

與: 條件1 && 條件2

或: 條件1 || 條件2

非: !條件

 

代碼重用

定義方法:

function name()

{

         內容

}

name()

{

         內容

}

return可以自定義函數狀態返回值,一旦遇到return,函數終止



數組是連續的多個獨立的內存空間,通過數組名引用

bash4.0以後支持2種:

    傳統數組:索引時數字,從0開始 declare -a name

    關聯數組:索引可以自定義,使用字符串做索引 declare -A name


    bash支持稀疏格式的數組 {0,,,,6}

賦值:

    1、單個賦值name[5]=value

    2、全部複製name=("value1""value2"...)

    3、指定索引進行賦值name=([0]="value1"[3]="vlue3")

    4、可以用read 賦值 read -a name

數組的長度可以用

    ${#name[*|@]}來查看

wKiom1X-uabxZTNvAAEHq8QFYUg628.jpg


$RANDOM取得0-32767的隨機數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章