資源描述:
《Unix Shell 編程簡(jiǎn)介》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、UnixShell編程簡(jiǎn)介第一節(jié)簡(jiǎn)介1.1什么是SHELLSHELL常被看作UNIX系統(tǒng)的命令解釋器,對(duì)于熟悉Windows用戶(hù),UNIXSHELL類(lèi)似于DOSShell,COMMAND.COM.UnixShell不僅僅是一個(gè)命令解釋器,還是一個(gè)強(qiáng)大的編程語(yǔ)言,有著完整的條件語(yǔ)句循環(huán)和函數(shù).1.2SHELL的類(lèi)型在UNIX中主要有兩種主要類(lèi)型的SHELL:*BourneShell(包括sh、ksh、bash)*CShell(包括csh和tcsh)Bourne類(lèi)型的Shell的,缺省的提示符是$,如果是C類(lèi)型的SHELL,缺省的提示
2、符是%.不同類(lèi)型的BourneShell如下:*BourneShell(sh)*KornShell(ksh)*BourneAgainShell(bash)*POSLXShell不同類(lèi)型的CShell如下:*CShell(csh)*TENEX/TOPSCShell(tcsh)1.2.1BourneShell70年代中期由StephenR.Bourne在AT&T貝爾實(shí)驗(yàn)室編寫(xiě)使用.BourneShell在多數(shù)UNIX版本中通常被安裝在/bin/sh下.三個(gè)主要缺點(diǎn)1、沒(méi)有文件名完整功能2、沒(méi)有命令歷史或命令編輯3、很難執(zhí)行多個(gè)后臺(tái)進(jìn)程或
3、任務(wù)1.2.2CShellCShell在80年代由BillToy在加州大學(xué)伯克利分校開(kāi)發(fā).CShell在多數(shù)UNIX版本中通常被安裝在/bin/csh下.缺點(diǎn):輸入輸出控制比較弱缺少函數(shù)語(yǔ)法不清晰,比較混亂優(yōu)點(diǎn)命令歷史(CommandHistory).用戶(hù)可以重復(fù)執(zhí)行以前執(zhí)行過(guò)的命令,在重新執(zhí)行前還可以編輯命令.別名(alias)可以為一條命令創(chuàng)建一個(gè)短的別名.文件名完整(fileNameCompletion)只輸入文件的幾個(gè)字符讓CShell自動(dòng)完整文件名.任務(wù)控制(JobControls),可以用job命令執(zhí)行多個(gè)進(jìn)程并控制.1
4、.2.3TENEX/TOPSCShell(tcsh)是CShell的一個(gè)新版本,可以用向上向下的方向鍵瀏覽歷史命令,用左右方向鍵來(lái)編輯命令.1.2.4KornShell(ksh)Ksh與sh完全兼容,增加一些額外特征命令歷史和歷史替換命令別名和函數(shù)文件名完整數(shù)組變量?jī)?nèi)置整數(shù)運(yùn)算1.2.5BourneAgainShell(bash)BourneAgainShell(bash)是作為GUN的一部分開(kāi)發(fā)的,也已經(jīng)在linux這樣的系統(tǒng)中取代了sh,包含了CShellKornShell特征,保留了與sh語(yǔ)法兼容,幾乎可以運(yùn)行所有的Bourn
5、eShell腳本.注:以下解釋如果沒(méi)有特別指出,都是基于BourneShell腳本一個(gè)簡(jiǎn)單的shellScrip文件1#!/bin/sh2echo“pleaseinputthenumberofloop:”3readnum4while[$num–lt10]5do6echo$num7num=`echo:$num_1”
6、bc`8done解釋#!/bin/sh1.如果Script的第一個(gè)非空白字符不是"#",則它會(huì)使用BourneShell。2.如果Script的第一個(gè)非空白字符是"#"時(shí),但不以"#!"開(kāi)頭時(shí),則它會(huì)使用CShell。3.
7、如果Script以"#!"開(kāi)頭,則"#!"後面所寫(xiě)的就是所使用的Shell,而且要將整個(gè)路徑名稱(chēng)指出來(lái)。建議使用第三種方式指定Shell,以確保所執(zhí)行的就是所要的。BourneShell的路徑名稱(chēng)為/bin/sh,而CShell則為/bin/csh。#!/bin/sh必須位于腳本的第一行。以使用shell來(lái)運(yùn)行腳本,如果在其他行中出現(xiàn),所以shell都會(huì)把當(dāng)作注釋而忽略掉,在shell腳本中,注釋以#開(kāi)頭,在#到行尾的所有的都被認(rèn)為是注釋。例如1.使用BourneShellscript文件開(kāi)頭為echoenterfilenameor
8、#!/bin/sh2.使用CShellscript文件開(kāi)頭為#CShellScriptor#!/bin/csh3使用perlscript文件開(kāi)頭為#!/usr/bin/perl除了在Script內(nèi)指定所使用的Shell外,你也可以在命令列中強(qiáng)制指定。比如你要用CShell執(zhí)行某個(gè)Script,你可以下這個(gè)命令:cshfilename此時(shí)的Script的存取權(quán)就不一定要為可執(zhí)行檔,其內(nèi)部所指定的Shell也會(huì)無(wú)效readnumnum變量,后面有關(guān)于變量的解釋while[$num–lt10]doecho$numnum=`echo:$nu
9、m_1”
10、bc`done循環(huán)語(yǔ)句。后面有關(guān)的解釋Script是以行為單位,我們所寫(xiě)的Script會(huì)被分解成一行一行來(lái)執(zhí)行。而每一行可以是命令、注解、或是流程控制指令等。如果某一行尚未完成,可以在行末加上"",這個(gè)時(shí)候下一行的內(nèi)容就會(huì)