版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
項目十shell編程【項目目標(biāo)】了解shell環(huán)境變量了解shell的特殊控制字符了解shell的語法結(jié)構(gòu)會編寫簡單的shell腳本會執(zhí)行shell腳本【任務(wù)描述】設(shè)計一個Shell腳本,在/userdata目錄下自動建立50個目錄,即user1~user50,并設(shè)置每個目錄的權(quán)限為rwxr-xr—設(shè)計一個Shell腳本,備份并壓縮/etc目錄的所有內(nèi)容,存放在/root/bak目錄里,且文件名為如下形式y(tǒng)ymmdd_etc,yy為年,mm為月,dd為日。10.1shell編程基礎(chǔ)Shell腳本程序主要用于系統(tǒng)管理和文件操作,它能夠方便自如地處理大量重復(fù)性的系統(tǒng)工作創(chuàng)建一個腳本程序必須以下面的行開始(必須方在文件的第一行):
#!/bin/sh
符號#!用來告訴系統(tǒng)它后面的參數(shù)是用來執(zhí)行該文件的程序。在這個例子中我們使用/bin/sh來執(zhí)行程序。當(dāng)編輯好腳本時,如果要執(zhí)行該腳本,還必須使其可執(zhí)行。要使腳本可執(zhí)行:
chmod+xfilename10.1shell編程基礎(chǔ)例:#!/bin/bash#Myfirstscriptecho“helloworld!”10.1shell編程基礎(chǔ)注釋在進行shell編程時,以#開頭的句子表示注釋,直到這一行的結(jié)束。變量在shell編程中,所有的變量都由字符串組成,并且不需要對變量進行聲明。要賦值給一個變量的方法為:變量名=值取出變量值可以加一個美元符號($)在變量前面。10.1shell編程基礎(chǔ)例:#!/bin/bash#對變量賦值a="helloworld“#打印變量a的內(nèi)容echo"Ais:"echo$a#!/bin/bashecho“enteryourname:readnameecho”yournameis$name”注意:有時候變量名很容易與其他文字混淆,比如:
num=2
echo"thisisthe$numnd“
這并不會打印出"thisisthe2nd",而僅僅打印"thisisthe",因為shell會去搜索變量numnd的值,但是這個變量時沒有值的??梢允褂没ɡㄌ杹砀嬖Vshell我們要打印的是num變量:
num=2
echo"thisisthe${num}nd“
這將打?。?/p>
thisisthe2nd10.1shell編程基礎(chǔ)管道和重定向管道(|)將一個命令的輸出作為另外一個命令的輸入。
grep"hello"file.txt|wc–lwc–lfile:計算文件行數(shù)wc-wfile:計算文件中的單詞數(shù)wc-cfile:計算文件中的字符數(shù)10.1shell編程基礎(chǔ)
重定向:將命令的結(jié)果輸出到文件,而不是標(biāo)準(zhǔn)輸出(屏幕)。>寫入文件并覆蓋舊文件。>>加到文件的尾部,保留舊文件內(nèi)容。
10.2shell程序的變量和參數(shù)Shell有以下幾種基本類型的變量:
(1)shell定義的環(huán)境變量
shell在開始執(zhí)行時就已經(jīng)定義了一些和系統(tǒng)的工作環(huán)境有關(guān)的變量,這些變量用戶還可以重新定義,常用的shell環(huán)境變量有:
HOME:用于保存注冊目錄的完全路徑名。
PATH:用于保存用冒號分隔的目錄路徑名,shell將按PATH變量中給出的順序搜索這些目錄,找到的第一個與命令名稱一致的可執(zhí)行文件將被執(zhí)行。10.2shell程序的變量和參數(shù)TERM:終端的類型。
UID:當(dāng)前用戶的標(biāo)識符,取值是由數(shù)字構(gòu)成的字符串。
PWD:當(dāng)前工作目錄的絕對路徑名,該變量的取值隨cd命令的使用而變化。
PS1:主提示符,在特權(quán)用戶下,缺省的主提示符是“#”,在普通用戶下,缺省的主提示符是“$”。
PS2:在shell接收用戶輸入命令的過程中,如果用戶在輸入行的末尾輸入“\”然后回車,或者當(dāng)用戶按回車鍵時shell判斷出用戶輸入的命令沒有結(jié)束時,顯示這個輔助提示符,提示用戶繼續(xù)輸入命令的其余部分,缺省的輔助提示符是“>”。10.2shell程序的變量和參數(shù)(2)用戶定義的變量
語法規(guī)則:
變量名=變量值
要注意的一點是,在定義變量時,變量名前不應(yīng)加符號“$”,在引用變量的內(nèi)容時則應(yīng)在變量名前加“$”;在給變量賦值時,等號兩邊一定不能留空格,若變量中本身就包含了空格,則整個字符串都要用雙引號括起來。
在編寫shell程序時,為了使變量名和命令名相區(qū)別,建議所有的變量名都用大寫字母來表示。10.2shell程序的變量和參數(shù)(3)位置參數(shù)
$n這個程序的第n個參數(shù)值,n=1...9
當(dāng)執(zhí)行這個程序時的參數(shù)數(shù)目超過9個時,我們可以使用shift命令將參數(shù)往前移一格,如此即可使用第10個以后的參數(shù)。
$0是一個特殊的變量,它的內(nèi)容是當(dāng)前這個shell程序的文件名,所以,$0不是一個位置參數(shù),在顯示當(dāng)前所有的位置參數(shù)時是不包括$0的。10.2shell程序的變量和參數(shù)(4)預(yù)定義變量
預(yù)定義變量和環(huán)境變量相類似,也是在shell一開始時就定義了的變量,所不同的是,用戶只能根據(jù)shell的定義來使用這些變量,而不能重定義它。所有預(yù)定義變量都是由$符和另一個符號組成的,常用的shell預(yù)定義變量有:$#傳遞給shellscript的參數(shù)個數(shù)
$*傳遞給shellscript的參數(shù)
$?上一個命令的返回代碼其中,“$?”用于檢查上一個命令執(zhí)行是否正確(在Linux中,命令退出狀態(tài)為0表示該命令正確執(zhí)行,任何非0值表示命令出錯)。10.2shell程序的變量和參數(shù)10.3shell程序設(shè)計的流程控制
和其他高級程序設(shè)計語言一樣,shell提供了用來控制程序執(zhí)行流程的命令,包括條件分支和循環(huán)結(jié)構(gòu),用戶可以用這些命令建立非常復(fù)雜的程序。
與傳統(tǒng)的語言不同的是,shell用于指定條件值的不是布爾表達(dá)式而是命令和字符串。
1.test測試命令
test命令用于檢查某個條件是否成立,它可以進行數(shù)值、字符和文件三個方面的測試,其測試符和相應(yīng)的功能分別如下:10.3shell程序設(shè)計的流程控制(1)數(shù)值測試:
-eq:等于則為真
-ne:不等于則為真
-gt:大于則為真
-ge:大于等于則為真
-lt:小于則為真
-le:小于等于則為真10.3shell程序設(shè)計的流程控制(2)字符串測試:
=:等于則為真
!=:不相等則為真
-z字符串:字符串長度為0字節(jié)則為真
-n字符串:字符串長度不為0字節(jié)則為真10.3shell程序設(shè)計的流程控制(3)文件測試:
-e文件名:如果文件存在則為真
-r文件名:如果文件存在且可讀則為真
-w文件名:如果文件存在且可寫則為真
-x文件名:如果文件存在且可執(zhí)行則為真
-s文件名:如果文件存在且至少有一個字符則為真
-d文件名:如果文件存在且為目錄則為真
-f文件名:如果文件存在且為普通文件則為真
-c文件名:如果文件存在且為字符型特殊文件則為真
-b文件名:如果文件存在且為塊特殊文件則為真10.3shell程序設(shè)計的流程控制
另外,Linux還提供了與(“-a”)、或(“-o)、非(“!”)三個邏輯操作符用于將測試條件連接起來,其優(yōu)先級為:“!”最高,“-a”次之,“-o”最低。10.3shell程序設(shè)計的流程控制2.if條件語句
shell程序中的條件分支是通過if條件語句來實現(xiàn)的,其一般格式為:
if[條件命令串];then
條件為真時的命令串
else
條件為假時的命令串
fi10.3shell程序設(shè)計的流程控制3.for循環(huán)
for循環(huán)的格式:
for變量名in值列表
do
若干個命令行
done
for循環(huán)每次為“變量名”分配一個“值列表”中的值。然后對于每個值,執(zhí)行do和done之間的循環(huán)體。10.3shell程序設(shè)計的流程控制例1:forNUMBERin0123456789doechoThenumberis$NUMBERdone例2:forNAMEinJohnPaulGeorge;doecho$NAMEismyfrienddone10.3shell程序設(shè)計的流程控制4.while和until循環(huán)
while和until命令都是用命令的返回狀態(tài)值來控制循環(huán)的。While循環(huán)的一般格式為:
while[條件]
do
若干個命令行
done
只要while的條件返回狀態(tài)為真,while循環(huán)就繼續(xù)執(zhí)行do...done之間的“若干個命令行”。10.3shell程序設(shè)計的流程控制until命令是另一種循環(huán)結(jié)構(gòu),它和while命令相似,其格式如下:
until[條件]
do
若干個命令行
done
until循環(huán)和while循環(huán)的區(qū)別在于:while循環(huán)在條件為真時繼續(xù)執(zhí)行循環(huán),而until則是在條件為假時繼續(xù)執(zhí)行循環(huán)。10.3shell程序設(shè)計的流程控制例1:until[$#-eq0]Doecho"第一個參數(shù)為:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度掛車司機運輸合同違約責(zé)任與賠償合同
- 2025年度網(wǎng)絡(luò)安全行業(yè)競業(yè)限制協(xié)議生效細(xì)則及數(shù)據(jù)隱私
- 二零二五年度創(chuàng)業(yè)公司股權(quán)分配及股權(quán)激勵協(xié)議
- 2025年度消防電梯采購與應(yīng)急救援系統(tǒng)配套合同
- 2025年度水果種植基地農(nóng)業(yè)保險合同
- 2025年度綠色能源股權(quán)合作開發(fā)合同
- 施工現(xiàn)場施工防傳染病制度
- 施工進度管理及控制制度
- 應(yīng)對突發(fā)事件應(yīng)急預(yù)案
- 防凍防雪應(yīng)急預(yù)案
- 鉗工考試題及參考答案
- 醫(yī)藥高等數(shù)學(xué)知到章節(jié)答案智慧樹2023年浙江中醫(yī)藥大學(xué)
- 中央企業(yè)商業(yè)秘密安全保護技術(shù)指引2015版
- 第4章操作臂的雅可比
- 人教版初中英語八年級下冊 單詞默寫表 漢譯英
- 學(xué)校網(wǎng)絡(luò)信息安全管理辦法
- 中國古代文學(xué)史 馬工程課件(下)21第九編晚清文學(xué) 緒論
- 2023年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招(語文)試題庫含答案解析
- 外科學(xué)-第三章-水、電解質(zhì)代謝紊亂和酸堿平衡失調(diào)課件
- 人事測評理論與方法-課件
- 最新卷宗的整理、裝訂(全)課件
評論
0/150
提交評論