天天看點

linux shell基礎(1)

shell程式設計:

編譯器,解釋器

程式設計語言:機器語言、彙編語言、進階語言

進階語言

     靜态語言:編譯型語言,事先轉換成可執行格式

         強類型(變量)

         關鍵字:

         c、c++、java、c#、、

     動态語言:解釋型語言,(onthe fly)邊解釋邊執行,運作(執行)時需要解釋器

         弱類型

         asp、asp.net、php、shell、python、perl

         lua

shell,python,perl至少精通一種

面向過程:把程式設計着眼點或立足點主要在于問題解決過程  一般适用于小型程式設計

面向對象:把要實作的項目抽象為一個一個對象,并定義對像之間的動作或可發生的操作

         一般适用于大型程式設計

shell,c是純面向過程

java,python是純面向對象

perl,c++即是即面向過程,也面向對象,c++是非常複雜的面向對象的語言

程式設計能力:

腳本程式設計

變量:變量是記憶體空間;變量是命名的記憶體空間;

記憶體:編址的存儲單元

程序:

變量類型:事先确定資料的存儲格式和長度

字元

數值

    整型

    浮點型

時間型

布爾型

邏輯:1+1>2

邏輯運算:與、或、非、異或

1:真

0:假

與運算

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

1 & 1 = 1

電路中的與運算:串聯的兩個開關為操作數,燈亮為真,燈滅為假

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

1 | 1 = 1

電路中的或運算:并聯的兩個開關為操作數,燈亮為真,燈滅為假

!1=0

!0=1

電路中非運算:操作數為開關1,

當開關1閉合,磁電産生磁場,磁場将開關2斷開,燈滅

當開關1斷開,磁電不産生磁場,開關2自然閉合,燈亮

異或運算:兩個操作數相同得0,兩個操作數不同得1

程式中有三種演算子:xor、xor、⊕

1⊕1=0

0⊕0=0

1⊕0=1

0⊕1=1

短路邏輯運算

與運算的短路邏輯:隻要有一個為假,結果肯定為假

或運算的短路邏輯:隻要有一個為真,結果肯定為真

shell 是弱類型程式設計語言

強:變量在使用前,必須事先聲明,甚至還需要初始化;

空為null

弱:變量用時聲明(意思是直接拿來用);甚至不差別類型;

顯示轉換

隐示轉換

變量指派:var_name=value

bash變量類型

     環境變量

     本地變量(局部變量)

     位置變量

     特殊變量(系統變量)

本地變量:

引用變量(替換變量):${varname},通常情況下{}可以省略

‘’為強引用(替換):内部引用的變量不會被替換

“”為弱引用(替換):内部引用的變量會被替換

聲明本地變量(作用域:整個bash程序)

[set]  varname=value 

set可以省略

聲明局部變量(作用域:目前代碼段)

[set] local   varname=value

聲明環境變量(作用域:目前shell程序及其子shell程序)

[set] export  varname=value

“導出”

位置變量:

$1,$2,…

特殊變量:

$?:儲存上一個指令的執行狀态傳回值;

     程式執行結果

     程式狀态傳回代碼(0-255)

        0:正确執行

        1-255:錯誤執行,1,2,127系統預留,其他的可以使用者自行定義;

輸出重定向:

>  覆寫重定向

>> 追加重定向

2> 錯誤重定向

2>> 錯誤追加重定向

&> 同時重定向

/dev/null:裝置,軟體模拟裝置,bit bucket,資料黑洞

撤消變量

unset varname

檢視目前shell變量

set  包括環境變量和本地變量

檢視目前shell中的環境變量

printenv

env

export

特殊變量和位置變量不能檢視

腳本在執行時會啟動一個子shell程序:

     指令行中啟動的腳本會繼承目前shell環境變量

     系統自動執行的腳本(非指令行啟動)就需要自我定義需要的各環境變量

腳本:指令的堆砌,按實際需要,結合指令流程控制機制實作的源程式

shebang:魔數

繼續閱讀