




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第三章 Linux 下 shell 編程,Shell腳本(外殼腳本)就是將多條終端命令編寫到一起,通過使用變量和流程控制等實(shí)現(xiàn)一定的交互式功能。,一、什么是 shell:,用戶與Linux的接口 命令解釋器 編程語言,二、shell的種類、創(chuàng)建與執(zhí)行:,Linux中有多種不同的shell,如csh、tcsh、ash、bash 等 , 但是通常我們使用 bash 進(jìn)行shell編程,因?yàn)?bash 是免費(fèi)的并且很容易使用。,1、用vi 編輯器將一系列命令別寫成 .sh文件,程序必須以下面的行開始#!/bin/sh,2、用chmod修改該文件的執(zhí)行權(quán)限;,3、./ 文件名 或者 sh 文件名,以#
2、開頭的句子表示注釋,直到這一行的結(jié)束,三、shell 編程:,1、echo 命令和 read 命令:,echo:輸出變量或者常量到終端。,read:將終端的輸入賦給某個(gè)變量。,echo “today is date ,please enter your name” # this is an example of echo and read command! read name echo -n “the name you entered is $name”,在單個(gè)命令行中使用多個(gè)命令的方法,2、變量的創(chuàng)建與引用:,可以在任何時(shí)間通過簡單的賦值來創(chuàng)建:,variable name = value,
3、Linux里面所有的變量都被當(dāng)做字符串,引用變量:$ variablename,a=5+4 b=$(5+4) c=expr 5 + 3 echo $a $b expr 5 + 3 c=$(a-b) (a=$a+1),a=hello world echo “a is: echo $a,常見的環(huán)境變量有:HOME PATH PS1等,可以像定義一個(gè)變量一樣來設(shè)置環(huán)境變量,在標(biāo)記它為環(huán)境變量時(shí)需要使用“ export ”命令應(yīng)用示例: $ export MYENV=1 $ echo $MYENV 使用“ set ”命令可以獲取當(dāng)前上下文中全部的變量,用戶變量: 環(huán)境變量: 位置變量:$0 $1 $2
4、 $3 $# $* $,變量:,環(huán)境變量:,Vi etc/profile (PATH=$PATH:. export PATH),$# :用于存放命令行中所鍵入的參數(shù)個(gè)數(shù) $*:可以引用傳遞給程序的所有參數(shù) $:和$*一樣,執(zhí)行Shell腳本時(shí)可以使用參數(shù)。由出現(xiàn)命令行上的位置確定的參數(shù)稱做位置參數(shù)。位置變量:$0 、$1、 $2、$3 $#、 $*、 $。,位置變量,echo $# arguments passed echo they are $*,編寫腳本args:,執(zhí)行:chmod ./args a b c,shiftdemo程序如下: echo $# $* shift echo $# $
5、* shift echo $# $* shift echo $# $* 執(zhí)行: chmod +x shiftdemo ./ shiftdemo a b c,位置參數(shù)的 shift 命令,3、轉(zhuǎn)義字符和通配字符:,轉(zhuǎn)義字符指的是在Shell中有特殊含義的字符。 例如: | ? * $ “ ( ) # ls file1-10.c # count=ls l | grep d | wc l ls l /dev | more # cat b.txt #cat a.txtb.txt # echo $(5+4) #echo ”The date is date” #echo $countabc 編寫一段程序計(jì)
6、算兩個(gè)輸入數(shù)之差,4、測試命令: test 和 ,求值表達(dá)式,并返回 true 或者 false,數(shù)值測試 串測試 文件測試,5、if case 條件控制語句:,if 測試條件1 then conmmand1 elif 測試條件2 then command2 Else fi,case string in string1 ) commands;; string2 ) commands;; * ) commands; esac,echo please enter your score: read c if test $c -lt 80 then echo bad! elif test $c -lt
7、 90 -a $c -ge 80 then echo good! else echo very good! fi,-a 并且 -o 或者 !非,if $1 -gt 100 then echo the number is greater than 100. elif $1 -lt 10 then echo the number is smaller than 10. else echo the number is between 10 and 100. fi $ ./ifdemo 100,echo “本腳本提供以下服務(wù): echo n “1)列出當(dāng)前文件夾內(nèi)的基本信息;“ echo “2)列出當(dāng)
8、前文件夾內(nèi)的所有信息; echo “3)退出腳本; echo “請(qǐng)輸入您的選擇1-3 read choice case $choice in 1)ls ; 2)ls -l; 3)exit; *)echo “選擇有誤!; esac,用case結(jié)構(gòu)實(shí)現(xiàn)三項(xiàng)基本服務(wù)的功能:,用case結(jié)構(gòu)實(shí)現(xiàn)中英文數(shù)字轉(zhuǎn)換的程序,if $# -ne 1 then echo usage: ./casedemo number exit 1 fi case $1 in 0) echo zero; 1) echo one; 2) echo two; 8) echo eight; 9) echo nine; esac,# d
9、isplay files under a given directory # $1-the name of the diectory # $2-the name of files dir=$1;shift if -d $dir then cd $dir if -f $1 then cat $1 echo End of $ dir / $1 else echo Invalid file name: $ dir / $1 fi else echo Bad directory name : $dir fi,6、for until while循環(huán)語句:,for var in word1 word2wo
10、rdn do command done,for i in 1 2 3 do echo $i done,例如:,for var do command done,for i do echo $i done,執(zhí)行時(shí)加上參數(shù),以空格隔開,i會(huì)用參數(shù)自動(dòng)賦值,# display files under a given directory # $1-the name of the diectory # $2-the name of files dir=$1;shift if -d $dir then cd $dir for name do if -f $name then cat $name echo E
11、nd of $ dir / $name else echo Invalid file name: $ dir / $name fi done else echo Bad directory name : $dir fi,While循環(huán),while 表達(dá)式 do command done,while “$#” -ne 0 do echo “$1” shift done 執(zhí)行: $ chmod +x whiledemo $ ./whiledemo a b c,until command1 do command done,Until 循環(huán),xuehao=1 while $xuehao -le 3 d
12、o echo Please enter the info about xuehao=$xuehao echo please enter name: read name echo please enter telephonenum: read tel echo xuehao:$xuehao name:$name tel:$tela.txt (xuehao=$xuehao+1) / xuehao=$($xuehao+1) done,xuehao=expr $xuehao + 1,7、函數(shù)的定義和調(diào)用,一個(gè)函數(shù)是一個(gè)子程序,用于實(shí)現(xiàn)一串操作的代碼塊(code block),它是完成特定任務(wù)的黑盒子. 當(dāng)有重復(fù)代碼, 當(dāng)一個(gè)任務(wù)只需要很少的修改就被重復(fù)幾次執(zhí)行時(shí), 這時(shí)你應(yīng)考慮使用函數(shù).,funcname() command . command ,函數(shù)被調(diào)用或被觸發(fā), 只需要簡單地用函數(shù)名調(diào)用.,iscontin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 杭州亞運(yùn)會(huì)親子活動(dòng)方案
- 朗讀特色展示活動(dòng)方案
- 某某之夜活動(dòng)方案
- 機(jī)關(guān)黨組織征文活動(dòng)方案
- 服刑人員心理活動(dòng)方案
- 林草詩歌比賽活動(dòng)方案
- 餐飲消防活動(dòng)方案
- 2025年國家信訪局直屬事業(yè)單位招聘考試教師招聘體育學(xué)科專業(yè)知識(shí)試卷
- 2025至2030LGP(導(dǎo)光板)行業(yè)市場占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 創(chuàng)新藥研發(fā)全鏈條的現(xiàn)狀與挑戰(zhàn)分析
- 本草食養(yǎng):養(yǎng)生藥膳餐廳商業(yè)計(jì)劃書
- 2025至2030石墨電極行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 江蘇省高郵市2025屆八下英語期末調(diào)研模擬試題含答案
- 2024-2025學(xué)年山東省濟(jì)南市市中區(qū)八年級(jí)(下)期末數(shù)學(xué)試卷(含解析)
- 2025年七一黨課-作風(fēng)建設(shè)永遠(yuǎn)在路上學(xué)習(xí)教育黨課
- 2025年高考數(shù)學(xué)全國二卷試題真題及答案詳解(精校打?。?/a>
- 《公路橋梁預(yù)應(yīng)力鋼絞線用錨具夾具和連接器 JTT 329-2025》知識(shí)培訓(xùn)
- 山東省2024年藝術(shù)類本科批美術(shù)與設(shè)計(jì)類第1次志愿投檔情況表(公布)
- 2025年江蘇省惠隆資產(chǎn)管理有限公司招聘筆試參考題庫含答案解析
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
- 反習(xí)慣性違章重在班組長
評(píng)論
0/150
提交評(píng)論