今日內容:
shell 基礎
1、介紹
2、變數
3、引導變數
shell是一門程式語言,用來解釋執行這門程式設計語法的直譯器
計算機體系結構控制流程:
命令》shell直譯器》系統呼叫介面》核心》計算機硬體
1、先啟動bash直譯器;
2、bash直譯器會把a.sh的內容從硬碟度入內容;
3、bash直譯器會是被剛剛讀入內容內容、解釋執行shellshell**;
1>bash a.sh #bash指令碼的檔案路徑,當前路徑
2>/root/a.sh #絕對路徑,所有路徑
./a.sh #當前路徑
解釋型
弱型別動態語言
什麼是變數變:事物的狀態是可以變化的
量:記錄下事物的狀態、數量
為何要用變數為了讓計算機能夠像人一樣,記下事物的狀態,並且是可以改變的;
如何用變數使用原則:先定義後使用引用
1>定義變數:
height=190
age=18
name=egon
2>訪問變數:
echo
$height
echo
$3>修改變數
height=200
age=18
變數名:相當於門牌號,是用來訪問變數值的;
變數值:記錄事物的狀態,即存放到記憶體中的資料;
前提:在見名知意的前提下,盡可能的精簡!
規則:
1、由字母、下劃線組成,如:age_of_egon=20
2、不能以數字開頭
3、不能使用關鍵字,比如命令
4、不要使用中文
整型:如年齡、等級、號碼
age=18
浮點型:如薪資、身高、體重
salary=3.3
字串:描述性質的狀態,姓名、性別、愛好、國籍
msg=
"hello world"
msg=
'hello world'
作用域:即生效的範圍
全域性作用域:在當前shell程序裡有效,包括自定義變數;
set 檢視所有變數(包括自定義和環境變數)
env 檢視環境變數
系統定義的環境變數配置檔案:
1、etc/profile
2、etc/bashrc
3、~/.bashrc
4、~/.bash_profile
在非登陸shell,即su egon時,執行的檔案只有兩個,順序為:
1> ~/.bashrc 使用者級
2> /etc/bashrc 系統級
if判斷
if與結尾fi像是乙個括號,乙個整體,不可缺;
if判斷分為三類:單分支、雙分支、多分枝
1>單分支:單個條件
if 條件1;
then
&>/dev/null#結果不想要可直接丟入黑洞
**1...
fi2>雙分支:兩個條件
if 條件1;
then
**1...
else
**1...
fi3>多分枝:多個條件
if 條件1;
then
**1···
elif 條件1;
then
**1**2
···#n個條件後
fi
test命令
test 用於檢查某個條件是否成立,它可以進行數值、字元、檔案三個方面的測試
引數-eq 等於則為真
-ne 不等於則為真
-gt 大於則為真
-ge 大於等於則為真
-lt 小於則為真
-le 小於等於則為真
利用if判斷與test寫乙個shell指令碼,例題:
輸入成績,90分以上為優秀,70分以上為良好,60分以上及格,60分以下為菜鳥:
vim if.sh
#!/bin/bash 要習慣性的加在首行
read -p '請輸入分數》' xif[
$x -ge 90 ]
;then
echo
"優秀"
elif
[$x -ge 70 ]
;then
echo
"良好"
elif
[$x -ge 60 ]
;then
echo
"及格"
else
echo
"菜鳥"
fi
1>單引號 ''
#強引用,在引號中都視為普通字元
可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號裡面看見的是什麼就會輸出什麼。
2>雙引號 ""
#弱引用,在引號中保留變數
把雙引號內的內容輸出出來;如果內容中有命令,變數等,會先把變數,命令解析出結果,然後在輸出最終內容來。
3>反引號 `` 與 $(
)取命令的結果,$(
)支援巢狀,反引號不支援巢狀
4>驚嘆號!與 ^ 相同,建議用!
取反6>井號 #
注釋7>美元符號 $
取變數值
8>星號*
任意多個字元
9>下劃線 _
無特殊作用,通常用語起名字
10>等號 =
賦值,判斷相等性,等號左右必須有空格
11>管道 |
把乙個程序的處理結果傳遞給另外乙個程序或命令
12>右斜槓 \
轉義命令,或轉移特殊字元
13>單雙小括號 (
)、((
))單:命令組,命令替換;
雙:整數擴充套件,常用語算數運算比較
14>單雙中括號 [
]、[]
單:條件測試,與test命令相同,只能用-eq等引數來進行比較,不過可用轉義以下再用:\>;還表示字元範圍,[a-za-z],[1-9]
雙:支援字串的模式匹配,使用[
[···]
]判斷條件結構,而不是[···],會報錯
15>花括號
匹配一組用逗號分隔的字串中的任意乙個,括號左邊的所有字元稱為前文,右邊稱為後文,前後文都是可選的,括號內不能包含不加引號的空白符;
16>百分號%、+、-
數**算符
ps:在有變數的指令碼或檔案中,一定要注意雙引號的使用,很多莫名的報錯都是因為引號用錯!
17>
&後台執行:echo 'hello'
;sleep 3;
echo
'world'
&18>重定向
>
>> 輸出重定向,>覆蓋, >>追加
<
<< 輸入重定向
0標準輸入
1標準正確輸出
2標準錯誤輸出
&標準正確和錯誤輸出
19>問號?
表示任意乙個字元
20>
[0-9]、[a-z]、[a-z]
範圍中的任意乙個字元
接受使用者輸入的使用者名稱
接受使用者輸入的密碼
判斷輸入的使用者名稱 等於 正確的使用者名稱 並且 輸入的密碼 等於 正確的密碼
告訴使用者認證成功
結束否則 告訴使用者輸入的賬號或密碼錯誤
shell指令碼**舉例:
#!/bin/bash
read -p '請輸入使用者名稱:' a
read -p '請輸入密碼:' b[$a
='egon']&&
[$b='123']&&
echo
'登陸成功!'
||echo
'登入失敗!'
給指令碼提速,加個&,放入後台 Java基礎語法(二十六)
1.程序概念 2.執行緒的概念 3.深入執行緒概念 5.執行緒的執行模式 大部分作業系統都支援多程序併發執行,現在的作業系統幾乎都支援同時執行多個程式。比如 現在我們上課一邊使用編輯器,一邊使用錄屏軟體,同時還開著畫圖板,dos視窗等軟體。此時,這些程式是在同時執行,感覺這些軟體好像在同一時刻執行著...
二十六 遮蔽中斷
1.6410和210採用向量中斷,由硬體執行。有兩組中斷源,相應的控制暫存器也有多個 2.6410和210使能和遮蔽是分開的暫存器 3.遮蔽控制暫存器的讀寫操作從而遮蔽中斷,都是寫入全1 4.6410的 遮蔽中斷,要操作兩個暫存器,目的是將使能中斷暫存器的相關位清除 define vic0inten...
二十六 裝飾器
裝飾器 由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強 no...