二十六 shell基礎與變數

2021-10-10 12:23:22 字數 4162 閱讀 3047

今日內容:

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...