1.編程語言的分類:機器語言,匯編語言,高級語言
高級語言:
靜態語言:編譯型語言 在程序執行之前就會編譯成機器代碼(完全轉化完成)
強類型(變量)
關鍵字:在程序運行之前,先編譯成機器代碼
C\C++\JAVA\C# 都屬于靜態語言類
不需要任何解釋器,自我就可以運行的程序
動態語言:解釋型語言 在程序運行之后編譯,使用一條編譯一條代碼
弱類型(通常)
邊解釋邊執行
PHP\SHELL\python\perl
2.編程的分類:面向過程與面向對象
面向過程:shell,C
編程時,立足于解決問題的過程本身
更適合來發小型程序 Linux內核是面向過程的C語言開發的
面向對象:JAVA,Python,perl,C++
編程時,把要實現的任務看做是一個一個的對象,來編程,并且定義對象之間的動作,開發出的操作來完成的
適合開發大型程序
3.變量、內存與進程
變量:命名的內存空間
內存:編址存儲單元
進程:命令的具體的執行過程
10:字符:需要16bit
10:數值:需要8bit(1010)
4.變量類型:事先確定好數據的存儲格式和長度
字符型
數值型:整型,浮點型(帶小數的eg:11.23,小數點之前作為一個單位存放,小數點之后作為一個單位存放,然后存儲一下小數點的位置)
5.邏輯運算:與、或、非、異或
與:全真才為真,有假便為假
或:有真便為真,全假才為假
非:(單目運算符 !)對真取反為假,對假取反為真
異或:操作數相同則為假,操作數不同才為真
6.shell腳本編程:面向過程的
編譯器:解釋器
所有的腳本,都需要解釋器,解釋執行,解釋器本身,基本上都是靜態語言開發的
bash:運行bash 首先系統中有一個可以運行bash的編譯器(腳本解釋器)
shell:弱類型編程語言
強類型:變量在使用前,必須事先聲明,甚至還需要初始化。
數值初始化為0,字符初始化也為空
NULL:空
弱類型:變量用時聲明(隨時用隨時聲明),甚至不區分類型(默認為字符串)
7.顯式轉換與隱式轉換:
顯式專換是你定義讓這個值類型轉換成你要用的值類型,例,你定義int i=5,想把他專換成char類就用顯式轉換(char)i。
隱式轉換是系統跟據程序需要而自動轉換的,不需要定義,但并不是所有值類型都可以互相轉換,所以有了顯式轉換。例,int i=5; char j='a'; int n=i+j;因char可以隱式專換為int類型,所以結果n=102
8.變量賦值與撤銷:
VAR_NAME=VALUE
unset VARNAME :只需要說明變量名就行,不需給此變量賦值
9.bash變量類型:
環境變量:作用域為當前shell進程及其子進程
export VARNAME=VALUE:變量先導出
VARNAME=VALUE export VARNAME :變量后導出
引用變量:${VARNAME}
下面沒有表示可以引起變量名混淆的,就可以不用加{},否則就必須加{}.
echo+'':表示強制引用,echo+"":表示弱引用,可以替代里面的變量名。
本地變量(局部變量)
本地變量:
set(set往往省略) VARNAME=VALUE:作用域為整個bash進程
局部變量:
local VARNAME=VALUE:作用域為當前代碼
位置變量:引用腳本的參數
$1,$2,$3……..
特殊變量(bash,為了保存某些特定的數值)
$?:保存上一個命令執行狀態返回值(以后用的非常多)
10.腳本在執行時,會啟動一個子shell進程:
環境變量對子shell是有效的
命令行中啟動的腳本會集成當前shell的環境變量
系統自動執行的腳本(非命令行啟動),需要自我定義需要的各環境變量
11.程序執行可能有兩種返回值:$?
程序執行結果
程序狀態返回代碼(0-255)
0:正確執行
1-255:錯誤執行
1,2,127:系統預留,有特殊的含義
12.輸出重定向
/dev/null:設備模擬設備,bit bucket,數據黑洞
13.查看當前shell中的變量
set包括環境變量和本地變量
查看當前shell中的環境變量:
printenv
env
export
14.shebang:魔數
#!/bin/bash
腳本中#開頭的行都是注釋行,不執行
原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/35742
總結的很好,可以適當的加上自己在練習過程中的問題,做到理論和實踐統一哦。作業需要在后面附上