shell編程:
python
編譯器,解釋器shell
編程語言:機器語言、彙編語言、高級語言編程
靜態語言:編譯型語言bash
強類型(變量):變量在使用前,必須事先聲明,甚至還須要初始化編程語言
關鍵字:ide
事先轉換成可執行格式加密
C、C++、JAVA、C#spa
動態語言:解釋型語言,on the fly命令行
弱類型:邊解釋邊執行,變量用時聲明,甚至不區分類型:3d
PHP、shell、python、perl
面向過程: shell、C
面向對象:JAVA、python,perl,C++
變量:
變量:內存空間的命名
內存:編址的存儲單元
進程:一個程序運行會產生相關進程。
計算機數據的基本存儲單位。 8bit(位)=1Byte(字節) 1024Byte(字節)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB
變量類型:事先肯定數據的存儲格式和長度。
一個字符佔一個字節,一個漢字佔兩個字節
字符:
數值:
整型
浮點型:11.23/1.123*10^1/0.1123*10^2
2015/10/10:64bit
99999 :24bit
10(字符)2個字符 16bit
10 (數值) 1010 4位 8bit (一個字節8位)
整型,8bit:256
0-255, 溢出
布爾型:真假型
邏輯運算:與、或、非、異或
1:真
0:假
異或:兩個操做數相同爲假,不一樣爲真
變量賦值:VAR_NAME=VALUE
bash變量類型:
環境變量
本地變量(局部變量)
位置變量
特殊變量
環境變量:做用域爲當前shell進程及其子進程
export VARNAME=VALUE 或
VARNAME=VALUE
export VARNAME
「導出」
本地變量:整個bash進程均可以使用
set VARNAME=VALUE
局部變量:做用域爲當前代碼段
local VARNAME=VALUE
腳本在執行時會啓動一個子shell進程:
命令行中啓動的腳本會繼承當前shell環境變量;
系統自動執行的腳本(非命令行啓動)就須要自我定須要各環境變量;
bash進程中定義變量
引用變量:${VARNAMW},有時候括號可省略。
「」弱引用,變量可作替換的
‘’強引用,變量不可作替換的
位置變量:
$1,$2,.....
特殊變量:
$? :上一個命令的執行狀態返回值(正確或錯誤);
程序執行後,可能有兩類返回值:
程序執行結果
程序狀態返回代碼(0-255)
0 :正確執行
1-255 :錯誤執行,1,2,127系統預留;
判斷一個用戶是否存在:
輸出重定向:
>
>>
2>
2>>
&>
/dev/null : 軟件設備,bit bucket,數據黑洞。
查看當前shell中的變量:set
查看當前shell中的環境變量:printenv、env、export
變量中追加變量(給字符串變量賦值)
變量默認是字符型,不能作算術運算的
腳本:命令的堆砌,按實際須要,結合命令流程控制機制實現的程序
Linux內核只能識別ELF(可執行可連接)格式
Linux內核是不能識別ASCII格式的,發現這不是可執行文件的時候得告訴內核這是一個腳本,讓內核啓動一個腳本解釋器來執行它。
每一個腳本開頭行都有一個魔數(shebang):
#!/bin/bash (以#!開頭,後面接着解釋器路徑)
要想要腳本獨立執行腳本文件必須有執行權限
變量名稱:
1、只能包含字母、數字和下劃線,而且不能數字開頭
2、不該該跟系統中已有的環境變量重名
3、最好作到見名知意
練習:寫一個腳本,完成如下任務
一、添加5個用戶,user1,.....,user5
二、每一個用戶的密碼同用戶名,並且要求,添加密碼完成後不顯示passwd命令的執行結果信息
三、每一個用戶添加完成後,都要顯示用戶某某已經成功添加。