版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 暴露報告中的隱私保護與倫理邊界
- 中國風(fēng)景介紹
- 2026年物資保管崗應(yīng)聘面試綜合模擬題及答案精解
- 2026年禁毒法律法規(guī)知識考試題含答案
- 接待外賓保密培訓(xùn)課件
- 內(nèi)蒙古2025年內(nèi)蒙古扎賚諾爾區(qū)事業(yè)單位綜合類崗位引進人才36人筆試歷年備考題庫附帶答案詳解
- 內(nèi)江2025年下半年內(nèi)江市部分市本級事業(yè)單位選調(diào)14人筆試歷年??键c試題專練附帶答案詳解
- 其他地區(qū)2025年兵團第四師可克達拉市事業(yè)單位高層次人才引進77人筆試歷年難易錯考點試卷帶答案解析
- 光明區(qū)2025年4月廣東中共深圳市光明區(qū)委政法委員會招聘特聘專干1人筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 佛山市2025廣東佛山市財政投資評審中心招聘專業(yè)技術(shù)雇員5人筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 工程建設(shè)項目與建筑市場平臺標準第3部分:工程建設(shè)項目審批數(shù)據(jù) DB37-T 5273.3-2024
- 平面磨床培訓(xùn)
- 風(fēng)電項目數(shù)據(jù)采集與分析流程
- 監(jiān)控運維工作總結(jié)
- 材料供應(yīng)商與裝修公司合作協(xié)議模板
- 股權(quán)收購協(xié)議(參考文本)
- 2025屆高考語文一輪復(fù)習(xí):二元思辨類作文思辨關(guān)系高階思維
- 地下綜合管廊混凝土工程施工方案
- 預(yù)制混凝土構(gòu)件質(zhì)量控制
- 2024高考英語應(yīng)用文寫作真題手把手:2023全國乙卷素材
- 抵制網(wǎng)絡(luò)爛梗主題班會課件不盲目跟風(fēng)做自己的主人
評論
0/150
提交評論