




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
aliasl='lslllsl命令(Xenixl命令aliascd..='cdcd..cd..命令(DOScd..的人幫助很大)aliasmd='mkdir';用md代替mkdir命令(對(duì)在DOS下…)aliasc:='mountdev/hda1/mnt/c&cd/mnt/cc:DOS分區(qū),再通常我們可以將以上命令放到自己的home目錄下的.bash_prifle文件中在使用sourcebash_profile命令.即可使用S編程基我們可以使用任意一種文字編輯器,比如gedit、kedit、emacs、vi等來編寫s,它必須以如下# od+x此后在該所在下,輸入./filename即可執(zhí)行該1 2.1if2.2&&||2.3case2.4select2.5while/forS3.145 6 6.16.27調(diào) bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)要取用一個(gè)變量的值,只需在變量名前面加一個(gè)$注意:給變量賦值的時(shí)候,不能在"="# #打印變量a的值:echo"Ais:"挑個(gè)自己喜歡的編輯器,輸入上述內(nèi)容,并保存為文件first,然后執(zhí)行 od+xfirst使其可執(zhí)行,最后輸入./first執(zhí)行該。其輸出結(jié)果如下:A oecho"thisisthe上述并不會(huì)輸出"thisisthe2nd"而是"thisisthe";這是由于s 會(huì)去搜索變量numnd的值, 要打印的是num變量:echo"thisisthe其輸出結(jié)果為:thisisthe需要注意 echo$varletS中有許多變量是系統(tǒng)自動(dòng)設(shè)定的,在用到這些變量時(shí)再作說明。除了只在內(nèi)有效的普通sexport關(guān)鍵字處理過的變量。本文不討論環(huán)境變量,因?yàn)樗黃if"if"表達(dá)式如果條件為真,則執(zhí)行then后的部分 ; ;大多數(shù)情況下,可以使用測試命令來對(duì)條件進(jìn)試,比如可以比較字符串、判斷文件是否存在及是否可讀等等……通常用"[]"來表示條件測試,注意這里的空格很重要,要確保方括號(hào)前后的空格。fsomefilen$var:判斷$var$a$b"]:判斷$a和$b執(zhí)行mantest可以查看所有測試表達(dá)式可以比較和判斷的類型。下面是一個(gè)簡單的ifif[${S}="/bin/bash"];echo"yourloginsisthebash(bourneagains echo"yourlogin isnotbashbut${S變量 還可以使用test選項(xiàng)文件名來測試,而使用echo$?來查看選項(xiàng)有:-d-f-w-r-x-L數(shù)值測試的選項(xiàng)有:-eq=- -qt -lt -le - &&||熟悉C[-f"/etc/shadow"]&&echo"Thiscomputerusesshadow這里的&&就是一個(gè)快捷操作符,如果左邊的表達(dá)式為真則執(zhí)行右邊的語句,你也可以把它看作邏輯運(yùn)算里的與操作。上述表示如果/etc/shadow文件存在,則打印”Thiscomputerusesshadowpasswords”。同樣s編程中還可以用或操作(||),例如:[-r"$mailfolder"]||{echo"Cannotread$mailfolder";exit1;}echo"$mailfolderhasmailfrom:"grep"^From"該首先判斷mailfolder是否可讀,如果可讀則打印該文件中的"From"一行。如果不可讀則或操作生不用與和或操作符,我們也可以用if表達(dá)式完成任何事情,但是使用與或操作符會(huì)更便利很多。casecase......)dosomething…lf.gz:gzipcompresseddata,deflated,originalfilename,lastmodified:MonAug2723:09:182001,os:Unixftype=`file"$1"`#Note'and`isdifferentcase"$ftype"inunzip"$1";;"$1:gzipcompressed"*)gunzip"$1";;"$1:bzip2compressed"*)bunzip2"$1";;*)echo"File$1cannotbe pressedwithsmartzip";;smartzip$1articles.zipselectselectvarin...;do....now$varcanbeusedecho"Whatisyourfavouriteselectvarin"Linux""GnuHurd"" BSD""Other";doecho"Youhaveselected如果以上運(yùn)行出現(xiàn)select:NOTFOUND將#!/bin/sh改為#!/bin/bash該的運(yùn)行結(jié)果如WhatisyourfavouriteGnu#?Youhaveselectedwhile/for在 while...;forvar ;下面的示例會(huì)把ABCforvarinABC;doecho"varis#listacontentsummaryofanumberofRPMpackages#USAGE:showrpmrpmfile1rpmfile2...#EXAMPLE:showrpm/cdrom/RedHat/RPMS/*.rpmforrpmpackagein$*;doif[-r"$rpmpackage"echo"===============$rpmpackage=============="rpm-qi-p$rpmpackageecho"ERROR:cannotreadfile這里出現(xiàn)了第二個(gè)特殊變量$*,該變量包含有輸入的所有命令行參數(shù)值。如果你運(yùn)行showrpmopenssh.rpmw3m.rpmwebgrep.rpm,那么$*就包含有3個(gè)字符串,即openssh.rpm,w3m.rpm和webgrep.rpm。S當(dāng)前下有兩個(gè)jpg文件:mail.jpg和tux.jpg。echomail.jpgecho'*.jpg'echo echo echo\*.jpgecho\$S當(dāng)要將幾行文字傳遞給一個(gè)命令時(shí),用here s是一種不錯(cuò)的方法。對(duì)每個(gè)寫一段幫助性 s就不必用echo函數(shù)一行行輸出。Here以<<開頭,后面接上一個(gè)字符串,這個(gè)字符串還必須出現(xiàn)在here s打印幫助:#wehavelessthan3arguments.Printthehelpif[$#-lt3];thencat<<HELPren--renamesanumberoffilesusingsedregularexpressionsUSAGE:ren'regexp''recement'files...EXAMPLE:renameall*.HTMfilesin*.html:ren'HTM$''html'*.HTMexit#Theshiftcommandremovesoneargumentfromthelistof#commandlinearguments.#$*containsnowalltheforfilein$*;if[-f"$file"];newfile=`echo"$file"|sed"s/${OLD}/${NEW}/g"`if[-f"$newfile"];thenecho"ERROR:$newfileexistsalready"echo"renaming$fileto$newfile..."mv"$file""$newfile"if表達(dá)式判斷輸入命令行參數(shù)是否小于3個(gè)命令將其打印在屏幕上。打印幫助文字后程序退出。如果輸入?yún)?shù)等于或大于3OLDNEWshift命令將第一個(gè)和第二個(gè)參數(shù)從參數(shù)列表中刪除,這樣原來的第三個(gè)參數(shù)就成為參數(shù)列表$*的第一個(gè)參數(shù)。然后我們開始循環(huán),命令行參數(shù)列表被一個(gè)接一個(gè)地被賦值給變量$filesed命令搜索和替換來產(chǎn)生新的文件名。然后將反短斜線內(nèi)命令結(jié)果賦值給newfile。這樣我們就達(dá)到了目的:得到了舊文件名和新文件名。然后使用mv命令進(jìn)行重命名S{#insidethebody$1isthefirstargumentgiventothefunction#$2thesecond...}你需要在每個(gè)的開始對(duì)函數(shù)進(jìn)行下面是一個(gè)名為xtitlebar的,它可以改變終端窗口的名稱。這里使用了一個(gè)名為help的函數(shù),該函#vim:setsw=4ts=4{cat<<xtitlebar--changethenameofanxterm,gnome-terminalorkdekonsoleUSAGE:xtitlebar[-h]"string_for_tibar"OPTIONS:-hhelptextexit}#incaseoferrororif-hisgivenwecallthefunctionhelp:[-z"$1"]&&help["$1"="-h"]&sendtheescapesequencetochangethextermti echo-e"33]0;$107"#==$*$1$2$9等特殊變量,這些特殊變量包含了用戶從命令行輸入的參數(shù)。迄今為止,我們僅僅了解了一些簡單令行語法(比如一些強(qiáng)制性的參數(shù)和查看幫助的-h選項(xiàng)。但是在編寫更復(fù)雜的程序時(shí),您可能會(huì)發(fā)現(xiàn)您需要的自定義的選項(xiàng)。通常的慣例是在所有可選的參數(shù)之前加一個(gè)減號(hào),后面再加上參數(shù)值(比如文件名)。{cat<<ThisisagenericcommandlineparserUSAGEEXAMPLE:cmdparser-l o-f---somefile1somefile2exit}while[-n"$1"];docase$1in-h)help;shift1;;#functionhelpis-f)opt_f=1;shift1;;#variableopt_fis-l)opt_l=$2;shift2;;#-ltakesanargument->shiftby--)shift;break;;#endof-*)echo"error:nosuchoption$1.-hforhelp";exitecho"opt_fis$opt_f"echo"opt_lis$opt_l"echo"firstargis$1"echo"2ndargis$2"cmdparser- o-f---somefile1opt_fis1opt_lis firstargis-somefile12ndargissomefile2這個(gè)是如何工作的呢?首先在所有輸入命令行參數(shù)中進(jìn)行循環(huán),將輸入?yún)?shù)與case表達(dá)式進(jìn)行S示===一般編程步驟們開始編寫新時(shí),可以先執(zhí)行如下命令:cpframework.sh#vim:setsw=4ts=4et:{cat<<b2d--convertbinarytodecimalUSAGE:b2d[-h]binarynumOPTIONS:-hhelptextEXAMPLE:b2dwillreturn58exit}{#printanerrorandexitecho"$1"exit}{#returnthelastcharacterofastringin$rvalif[-z"$1"];then#emptystring#wcputssomespacebehindtheoutputthisiswhyweneedsed:numofchar=`echo-n"$1"|wc-c|sed's///g'`#nowcutoutthelastrval=`echo-n"$1"|cut-b}{#removethelastcharacterinstringandreturnitin$rvalif[-z"$1"];then#emptystring#wcputssomespacebehindtheoutputthisiswhyweneedsed:numofchar=`echo-n"$1"|wc-c|sed's///g'`if["$numofchar"="1"];then#onlyonecharinstringnumofcharminus1=`expr$numofchar"-"1`#nowcutallbutthelastchar:rval=`echo-n"$1"|cut-b-#rval=`echon$1|cutb0-${numofcharminus1}`運(yùn)行時(shí)出錯(cuò).#原因是cut從1開始計(jì)數(shù),應(yīng)該是cut-b1-${numofcharminus1}}while[-n"$1"];docase$1in-h)help;shift1;;#functionhelpis--)shift;break;;#endof-*)error"error:nosuchoption$1.-hfor#Themainprogram#oneargmustbe[-z"$1"]&&helpwhile[-n"$binnum"];dolastchar"$binnum"if["$rval"="1"];sum=`expr"$weight""+"#removethelastpositionin$binnumchop"$binnum"weight=`expr"$weight""*"2`echo"binary$binnumorigisdecimal$sum"該使用的算法是利用十進(jìn)制和二進(jìn)制數(shù)權(quán)值(1,2,4,8,16,..),比如二進(jìn)制"10"可以這樣轉(zhuǎn)換成十進(jìn)0*1+1*2=lastcharwc–ccut命令取出末尾一個(gè)字符。Chop函數(shù)的功能則是移除最后一個(gè)字符。件可能會(huì)變得很大以至于該文件的速度變慢;下面的rotatefile可以解決這個(gè)問題。這個(gè)可以重命名郵件保存文件(outmail)outmail.1outmail.1outmail.2等#vim:setsw=4ts=4{cat<<rotatefile--rotatethefilenameUSAGE:rotatefile[-h]filenameOPTIONS:-hhelptextEXAMPLE:rotatefileoutThiswille.grenameout.2toout.3,out.1toout.2,outtoout.1[BR]and
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備生產(chǎn)檢修管理制度
- 設(shè)備缺陷異常管理制度
- 設(shè)備驗(yàn)收安裝管理制度
- 設(shè)計(jì)公司薪資管理制度
- 設(shè)計(jì)質(zhì)量安全管理制度
- 診所人員消毒管理制度
- 診所科室人員管理制度
- 試劑使用安全管理制度
- 財(cái)務(wù)統(tǒng)計(jì)部門管理制度
- 財(cái)政ukey管理制度
- 中國Linux軟件行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢(shì)與投資分析研究報(bào)告(2024-2030版)
- 探究大象耳朵秘密:2025年課堂新視角
- 《新能源乘用車二手車鑒定評(píng)估技術(shù)規(guī)范 第1部分:純電動(dòng)》
- 下沉式廣場結(jié)構(gòu)施工方案
- 《加坡的教育制度》課件
- Windows操作系統(tǒng)及應(yīng)用期末測試試題及答案
- 《交通事故車輛及財(cái)物損失價(jià)格鑒證評(píng)估技術(shù)規(guī)范》
- 北師大版二年級(jí)數(shù)學(xué)下冊(cè)各單元測試卷
- 招生就業(yè)處2025年工作計(jì)劃
- 【MOOC】外國文學(xué)經(jīng)典導(dǎo)讀-西北大學(xué) 中國大學(xué)慕課MOOC答案
- 醫(yī)院供電合同
評(píng)論
0/150
提交評(píng)論