Shell 編程

Kali-LinuxShell編程

【課程目的】

1.掌握shell的基本命令

2.掌握shell的基本概念和作用

3.掌握shell環(huán)境變量概念和使用方法

4.掌握shell程序的結(jié)構(gòu)和設(shè)計(jì)方法

【實(shí)現(xiàn)場(chǎng)景】

1. VMware Workstation虛擬機(jī)

2. Kali Linux操作系統(tǒng)

【課程原理】

1. shell的基本概念:

shell就是用戶與操作系統(tǒng)內(nèi)核之間的接口,起著協(xié)調(diào)用戶與系統(tǒng)的一致性和在用戶與系統(tǒng)之間進(jìn)行交互的作用。

shell在linux系統(tǒng)中具有極其重要的低位。

2. Shell腳本

Shell最強(qiáng)大的功能在于它是一個(gè)功能強(qiáng)大的編程語言。用戶可以在文件中存放一

系列的命令,這被稱為Shell腳本或Shell程序,將命令、變量和流程控制有機(jī)地

結(jié)合起來將會(huì)得到一個(gè)功能強(qiáng)大的編程工具。

3. Shell腳本結(jié)構(gòu)

Shell結(jié)構(gòu)中主要包括三部分:

#!指定執(zhí)行腳本的shell類型

#代碼注釋行

命令可控制結(jié)構(gòu)

#!/bin/bash

#Thisis my first shell script.

cd/root

ls-l

mkdirf1

cdf1

vif1

chmod+x f1

cd

/root

注:編寫的shell腳本默認(rèn)是不可執(zhí)行的,需要用chmod命令更改文件權(quán)限

4.執(zhí)行shell腳本的方法

a)輸入定向到shell腳本。腳本后不用帶參數(shù)

例如:root@kali:~# bash

b)以腳本名作為shell命令的參數(shù),一般形式:shell名腳本名[參數(shù)]

例如:root@kali:~# bashf1

c)使用‘.’命令。一般形式:. /腳本名

例如:root@kali:~# . /f1

5. Shell語法

a) Shell變量

變量用來存儲(chǔ)數(shù)據(jù),與其他編程語言相比,shell的變量要簡單的多,不需要

指定類型。格式:

變量名=變量值

注:等號(hào)兩側(cè)不能有空格,變量名是以字母、下劃線開頭的字母、下劃線和數(shù)

字的組合,區(qū)分大小寫。

引用變量值時(shí)在變量前加‘$’符號(hào),如:echo $ name

b)位置變量

shell解釋執(zhí)行用戶命令時(shí),將命令的第一部分作為命令名,其它部分作為參數(shù),由出現(xiàn)在命令行上的位置確定的參數(shù)稱為位置參數(shù)。

例如:ls–l file1 file2 file3

file4

$0代表此程序的文件名ls–l

$n代表此程序的第n個(gè)參數(shù)值,n=1-9,$1=file1

c) read命令

從鍵盤讀取數(shù)據(jù)賦值給變量

例如:#!/bin/bash

read one two three

echo“This is $one.”

echo“This is $two.”

echo“This is $three.”

d) expr命令

對(duì)整數(shù)型變量進(jìn)行算數(shù)運(yùn)算

例如:expr 3 + 5

expr $nu - 5

expr $nu1 / $nu2

e)變量測(cè)試語句

用于測(cè)試變量是否相等、是否為空和文件類型等

格式:test測(cè)試條件或[測(cè)試條件]

例如:test n1–eq n2或[ n1–eq n2 ]

字符串測(cè)試

測(cè)試條件含義

st1 = st2 st1與st2相等為真

st1!= st2 st1與st2不相等為真

s s不為空時(shí)為真

-n s s的長度大于0為真

-z s s的長度為0時(shí)為真

數(shù)值測(cè)試

n1–eqn2 n1是否等于n2 n1–gen2 n1是否不小于n2

n1–nen2 n1是否不等于n2 n1–ltn2 n1是否小于n2

n1–gtn2

n1是否大于n2 n1–len2 n1是否不大于n2

文件測(cè)試

-r file文件是否可讀

-w file文件是否可寫

-x file文件是否可執(zhí)行

-f file文件是否為普通文件

-d file文件是否為目錄

-s file文件的內(nèi)容是否大于0

f)分支結(jié)構(gòu)if

if分支結(jié)構(gòu)的語法形式

if [條件測(cè)試1]

then

執(zhí)行命令1

Elif[條件測(cè)試2]

then

執(zhí)行命令2

??

else

執(zhí)行命令n

fi

多個(gè)條件時(shí)可以用邏輯運(yùn)算符組成測(cè)試表達(dá)式

-a邏輯與

-o邏輯或

!邏輯非

g)分支結(jié)構(gòu)case

case經(jīng)常用于多重分支結(jié)構(gòu),其語法形式為;

case字符串in

匹配字符串1)

執(zhí)行命令1;;

匹配字符串2)

執(zhí)行命令2;;

??

匹配字符串n)

執(zhí)行命令n;;

esca

h)循環(huán)結(jié)構(gòu)while

while結(jié)構(gòu)語法形式

while條件測(cè)試

do

執(zhí)行命令

done

執(zhí)行流程為:只要條件測(cè)試的結(jié)果為真,就執(zhí)行do和done之間的循環(huán)體,

再進(jìn)行條件測(cè)試,然后執(zhí)行循環(huán)體,直到條件測(cè)試的結(jié)果為假為止。

i)循環(huán)結(jié)構(gòu)until

until結(jié)構(gòu)的語法形式

until條件測(cè)試

do

執(zhí)行命令

done

其執(zhí)行流程為:只要條件測(cè)試的結(jié)果為假,就執(zhí)行do和done之間的循環(huán)

體,直到條件測(cè)試的結(jié)果為真為止。

j)循環(huán)結(jié)構(gòu)for

for循環(huán)結(jié)構(gòu)的語法形式為

for變量in值表

do

執(zhí)行命令

done

其執(zhí)行流程為:第一次循環(huán)時(shí)將值表中的第一個(gè)值賦給變量,執(zhí)行循環(huán)體,

第二次循環(huán)時(shí)將值表中的第二個(gè)值賦給變量,執(zhí)行循環(huán)體,以此類推直到值表

值全賦值給變量循環(huán)結(jié)束。

在執(zhí)行循環(huán)時(shí)命令break和continue可以跳出循環(huán)

break跳出整個(gè)循環(huán)

continue跳出本次循環(huán),繼續(xù)下次循環(huán)

k)函數(shù)應(yīng)用

在shell腳本中可以定義并使用函數(shù),函數(shù)要先定義后使用,定義函數(shù)的

語法形式為:

函數(shù)名()

{

執(zhí)行命令序列

}

注:函數(shù)中變量均為全局變量無局部變量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Bash內(nèi)置基本變量 PWD : 顯示當(dāng)前的工作目錄 OLDPWD : 顯示上一次的工作目錄 ~:用戶家目錄 - ...
    魏鎮(zhèn)坪閱讀 1,654評(píng)論 0 6
  • Shell簡介 Shell會(huì)執(zhí)行用戶輸入的命令,并且在屏幕上顯示執(zhí)行的結(jié)果。 單從字面的意思上理解,Shell的本...
    故事狗閱讀 2,198評(píng)論 2 10
  • 1. shell腳本: 包含一些命令或聲明,并符合一定格式的文本文件 ? 格式要求:首行shebang(#!)機(jī)制...
    尛尛大尹閱讀 1,994評(píng)論 0 1
  • Shell是什么? shell本身是一個(gè)命令解釋器,介于操作系統(tǒng)的內(nèi)核(kernel)態(tài)和用戶態(tài)之間,可以執(zhí)行系統(tǒng)...
    echoworlding閱讀 28,386評(píng)論 11 81
  • 為規(guī)范開發(fā)流程,提升整體工作效率,特制定本辦法。 一、需求管理流程 需求人員提出Bug,步驟、結(jié)果、期望必須寫明(...
    lua90閱讀 1,727評(píng)論 1 0

友情鏈接更多精彩內(nèi)容