編程原理:
一、編程介紹
早期編程:
驅動 硬件默認是不能使用的;
不一樣的廠家硬件設備之間須要進行指令溝通,咱們須要驅動程序來進行翻譯
更趨近與硬件開發的工程師,要學習「彙編語言」;而彙編語言被廠家所限制;C C++的底層就是彙編語言;
如今編程:
基於高級語言,以及超高級語言,更好的讓程序員可以實現編程功能python
編程語言的分類:
高級語言、超高級語言須要翻譯成計算機可讀的語言(二進制指令)
解釋型 -- 逐行翻譯,逐行執行 shell python JAVA
bash -x filename.sh
編譯型 -- 一次編譯,所有執行 C語言 C++ C# JAVA程序員
程序 = 指令+數據
面向對象 -- 側重於數據的編程語言
面向過程 -- 側重於指令shell
編程語言的執行方式:
【一行一行】
一、順序執行
二、循環執行 -- for(遍歷)while(循環條件)until(和while相反)
三、選擇執行 -- 側重於指令編程
二、shell腳本語言介紹
缺點:shell沒有內嵌函數,沒有函數庫調用
優勢:調用os操做系統的命令行,來實現全部功能數組
shell腳本包括: 一、命令()
二、變量(全局變量、局部變量、本地變量、傳參)
三、邏輯關係bash
shell的第一句話!(必須寫)
#!/bin/bash (#!又叫Shebang) -- 定義腳本解釋器(廣泛認爲#爲註釋行,這裏特殊)
cat /etc/shells 查看當前系統支持的shell程序
echo $SHELL 查看當前會話的shell程序
/etc/passwd 指定了用戶默認支持的shell程序編程語言
shell的執行:
1.bash命令來執行腳本
-n 查看shell腳本的邏輯錯誤(注意:單詞寫錯無論)
-x 逐行顯示執行的腳本程序(方便排錯)
2.受權 chmod + x filename.sh
使用全路徑執行腳本便可函數
三、變量(一段命名的內存空間,用來存儲臨時)
環境變量
局部變量 declare -- 定義變量類型
本地變量 local在函數中使用
變量類型:
數值型:
一、整形 int(數值溢出)
二、浮點型 float(溢出更加嚴重)
三、布爾值 0 1(真假)(True False)
字符串:
一、普通字符及字符串
二、數組學習
編程語言的分類:
根據變量不一樣,分爲強類型語言和弱類型語言
一、強類型語言 -- 數值必須被定義才能進行處理或運算
二、弱類型語言 -- 編程語言能夠自動識別變量類型
【多態:一個數據具備多個屬性,而最後使用的屬性取決於和它進行運算的數據】測試
傳參
$? 上一條命令的執行狀態 (0正確,1-255錯誤)
$1 $2 ..${10} 命令後面傳入腳本的數據,以空格爲分隔符
$# 統計傳參數量 ${$#}()
$* 表示全部的傳參以字符串的形式輸出
$@ 表示全部的傳參以列表的形式輸出
定義變量格式
NAME=VALUE
經過declare定義變量類型
declare -i表明整數
declare -a表明數組
變量命名:
一、下劃線的方式制定變量名稱
二、駝峯命名方式
test文件測試、條件判斷
在腳本中,咱們須要進行語句分支;說白了,是要作判斷
判斷就是使用test命令來實現;
使用格式:
1.test [option] file
2.[ 條件語句 ]
常見的test選項:
比較選項:
-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小與等於
判斷選項:
-e 判斷文件是否存在
-f 判斷是否爲普通文件
-d 判斷是否爲目錄文件
-L 判斷是否爲連接文件
-r -w -x(判斷文件是否具備讀 寫 執行權限)
關聯選項:
-o(或)
-a(與)
! (非)
字符串判斷:
= 判斷兩邊的字符串是否相同
! 不等於
-z STRING 字符串長度爲0則是真
-n 和-z相反,存在爲假,不存在爲真
五、邏輯運算
與 && :兩邊的命令都爲真,結果爲真
或 || :任意一邊命令爲真,結果爲真同時爲假,纔是假
非 !=
這個邏輯運算符,先後對接的都是單獨存在的命令
[ $? -eq 0 ] && exit 0 ||exit 1
六、算數運算
let 1+1
let a=1+1
echo $a
expr 1*1
expr 1 * 10
$[$1+10]
a=$[2+3]
echo $a
$(($1/$2))
a=$(3/2)
echo $a
運算符:+ - * / % **
#!/bin/bash #添加用戶 if id $* &> /dev/null; then echo "這個用戶已經存在" else for i in $*;do useradd $i echo "123456" | passwd --stdin "$i" &> /dev/null echo "用戶 $i 添加成功" done exit 0 fi