shell編程-01.ppt_第1頁
shell編程-01.ppt_第2頁
shell編程-01.ppt_第3頁
shell編程-01.ppt_第4頁
shell編程-01.ppt_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Shell 編程,主講:成寶宗,主要內(nèi)容,Shell介紹 shell基本語法 Shell常用語句,Shell介紹,UNIX的shell程序解釋用戶的命令,不管是用戶直接輸入的或者從一個稱作Shell腳本或者Shell程序文件讀入。 Shell腳本是解釋型的,而不是編譯型的。Shell從腳本行的每行讀取命令并在系統(tǒng)中搜索這些命令,當(dāng)編譯器把一個程序轉(zhuǎn)化為可供機器讀取的形式時,那么它就可以被以一個可執(zhí)行文件用在shell腳本當(dāng)中。 除了向內(nèi)核傳送命令之外,shell的主要任務(wù)是提供一個可單獨配置的使用shell資源配置文件的用戶環(huán)境。,Shell類型,sh 或者稱作 Bourne Shell: 最

2、初的shell并且仍然在UNIX系統(tǒng)和UNIX相關(guān)系統(tǒng)中使用。它是基本的shell,是一個特性不多的小程序。雖然不是一個標準的shell,但是為了UNIX程序的兼容性在每個Linux系統(tǒng)上仍然存在。 bash 或者稱作 Bourne Again shell: 標準的GNU shell,直觀而又靈活。或許是初學(xué)者的最明智選擇同時對高級和專業(yè)用戶來說也是一個強有力的工具。在Linux上,bash 是普通用戶的標準shell。這個shell因此稱為Bourne shell的超集,一套附件和插件。意味著bash和sh是兼容的:在sh中可以工作的命令,在bash中也能工作,反之則不然。 csh 或者稱作

3、 C shell: 語法了類似于C語言,某些時候程序員會使用。 tcsh 或者稱作 Turbo C shell: 普通C shell的超集,加強了的用戶友好度和速度。 ksh 或者稱作 Korn shell: 某些時候被有UNIX背景的人所賞識。Bourne shell的一個超集,有著對初學(xué)者來說就是一場惡夢的標準配置。 文件 /etc/shells,一個簡單的shell腳本,#!/bin/bash/shell腳本的開始 clear echo “Hello, $USER“/打印用戶信息 echo echo “Todays date is date“ /顯示日期和時間 echo echo “Th

4、e user is :“/提示信息 who/who命令 echo echo “This is uname -s“/cpu信息 echo echo Thats all folks!,Shell如何執(zhí)行命令,執(zhí)行交互式命令 外部命令 內(nèi)建命令 執(zhí)行腳本的方式: 1,Sh 文件 2,先Chmod +x 文件 再./腳本 例如: #!/bin/sh cd . ls,啟動腳本,以交互登錄shell: 首先先執(zhí)行/etc/profile,設(shè)置所有用戶公共的環(huán)境 然后依次查找/.bash_profile /.bash_login和/.profile三個文件,找到第一個存在并且可讀的文件來執(zhí)行,因此當(dāng)前用戶的

5、環(huán)境可以通過設(shè)置/etc/profile實現(xiàn)。,Shell基本語法,變量 環(huán)境變量(可以從父進程傳給子進程,常用env查看) 本地變量(只存在于當(dāng)前shell進程,用set可以顯示) 設(shè)置變量: VARvalue(本地變量) Export VAR或者Export VARvalue(導(dǎo)入成環(huán)境變量) Unset命令用戶刪除已經(jīng)定義的環(huán)境變量或本地變量 使用$VAR或者$VAR可以取出變量的值,例如: rootbaozong myshell# echo $SHELL /bin/bash rootbaozong myshell# echo $SHELLabc rootbaozong myshell#

6、 echo $SHELL abc /bin/bash abc rootbaozong myshell# echo $SHELL abc /bin/bash abc rootbaozong myshell# echo $SHELLabc /bin/bashabc,變量的定義與刪除,變量定義的時候不允許有空格 例如:STRING=“my name”,導(dǎo)出變量Exporting,一個子shell能夠改變從父shell變量繼承過來的變量,但是在子shell所作的改變對父shell也沒有影響,Bourne shell保留變量,Bourne shell保留變量,特殊Bash變量,文件名替換,用于匹配的字符

7、稱為通配符,例如: * 匹配零個或者多個任意字符 ? 匹配一個任意字符 若干字符匹配方括號中任意一個字符一次出現(xiàn) 如: Ls /dev/ttyS* Ls cheng0?.txt Ls cheng0-2.txt Ls cheng0120-9.txt,命令替換,命令替換允許一個命令的輸出來替換這個命令本身。命令替換在一個命令這樣封裝的時候發(fā)生: $(command) 或者象這樣使用: command 如: date=date Echo $date 或者 date=$(date) Echo $date,轉(zhuǎn)義字符,轉(zhuǎn)義字符:“”,單引號與雙引號,單引號()用于保持在引號內(nèi)的每個字符的字面值。 雙引號保

8、持引號內(nèi)的所有字符的字面值,除了$,,shell語法,練習(xí) linux.txt文件中有l(wèi)inux can display這么一行 lcd=cat linux.txt h=hello w=world linux=echo $lcd $h $w echo $lcd $h $w echo “$linux” 說說2個echo分別顯示什么內(nèi)容,Shell的輸入與輸出,Echo常見-n(禁用轉(zhuǎn)義字符) e(可以使用轉(zhuǎn)義字符) #!/bin/sh echo -e this 3 linesnnn echo ok Read #!/bin/sh echo enter you name: read name ech

9、o enter you passwd: read passwd echo $name $passwd,算術(shù)替換,用于算術(shù)計算:$()中的shell變量取值將換成整數(shù),如: Var=45 Echo $($var+3) 注意只能用+-*/和(),并且只能做整數(shù)計算。 練習(xí):編寫一個shell版本的計算器,別名:alias,一個別名允許使用一個字符串來代替一個字當(dāng)它作為一個簡單命令的第一個字時候。shell維護一個可以用 alias 和 unalias 內(nèi)建命令來設(shè)置或者取消的別名列表。用 alias 命令而不帶選項的時候可以顯示當(dāng)前shell所知的別名列表。,shell的歷史記錄,history

10、/bash_history文件中 !n 執(zhí)行history中第n條指令 ! 執(zhí)行history中最后一條指令 !str 執(zhí)行history中最后以str開頭的命令 注意:Shell具有的補全功能,請大家利用好。,Shell腳本語法,條件測試:test或者 可以用test或者測試一個條件是否成立,如果測試結(jié)果為真,則該命令退出狀態(tài)為0,如果為假,狀態(tài)為1。,test,文件測試格式:test option file 或者 option file -b file 塊文件-c file 字符文件-d file 目錄-e file 存在-p file 管道-r file 可讀-s file 大于0 -w

11、 file 可寫-x file 可執(zhí)行,test,-a 邏輯與,操作符兩邊均為真,結(jié)果為真,否則為假。 -o 邏輯或,操作符兩邊一邊為真,結(jié)果為真,否則為假。 ! 邏輯否,條件為假,結(jié)果為真。,test,整數(shù)比較格式:test int1 operator int2-eq 數(shù)值相等。 -ne 數(shù)值不相等。 -gt 第一個數(shù)大于第二個數(shù)。 -lt 第一個數(shù)小于第二個數(shù)。 -le 第一個數(shù)小于等于第二個數(shù)。 -ge 第一個數(shù)大于等于第二個數(shù)。 n1 -eq n2 n1和n2相等n1 -ge n2 n1大于或者等于n2n1 -gt n2 n1大于n2n1 -le n2 n1小于或者等于n2n1 -lt

12、 n2 n1小于n2n1 -ne n2 n1不等于n2,test,字符串測試格式:test option string或者option string = 兩個字符串相等。 != 兩個字符串不等。 -z 空串。 -n 非空串。 s1 = s2 相等s1 != s2 s1與s2不同s1 s2 s1的ASCII在s2后,If語句,i f語句測試條件,測試條件返回真( 0)或假(1)后,可相應(yīng)執(zhí)行一系列語句。 簡單的if語句是: i f條件 then 命令 f i 注意:使用i f語句時,必須將t h e n部分放在新行,否則會產(chǎn)生錯誤。如果要不分行,必須使用命令分隔符。現(xiàn)在簡單i f語句變?yōu)椋?if

13、 條件;t h e n 命令 f i,If語句,i f語句其格式為: if 條件1 then 命令1 elif 條件2 then 命令2 else 命令3 f I,If 條件1 如果條件1為真 Then 那么命令1 執(zhí)行命令1 elif 條件2 如果條件1不成立 then 那么命令2 執(zhí)行命令2 else 如果條件1,2均不成立命令3 那么執(zhí)行命令3 fi 完成,練習(xí):,用shell編寫猜數(shù)字程序 在當(dāng)前目錄下查找指定文件,for循環(huán),f o r循環(huán)一般格式為: for 變量名i n列表 d o 命令1 命令2 d o n e 當(dāng)變量值在列表里, f o r循環(huán)即執(zhí)行一次所有命令,使用變量名訪問列表中取值。命令可為任何有效的s h e l l命令和語句。變量名為任何單詞。 I n列表用法是可選的,如果不用它, f o r循環(huán)使用命令行的

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論