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:魔數