> □前言 □將文字檔設(shè)為可執(zhí)行的Shell Script□Script的基本結(jié)構(gòu)及觀念□Bourne Shell一、變數(shù)二、執(zhí)行命令三、流程控制□C Shell一、變數(shù)二、執(zhí)行命令三、流程控制□附錄A expr命令□附錄。UNIX SHELL腳本編程。" />

日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

UNIX SHELL腳本編程


<<<目錄>>>
□前言
□將文字檔設(shè)為可執(zhí)行的Shell Script□Script的基本結(jié)構(gòu)及觀念□Bourne Shell一、變數(shù)二、執(zhí)行命令三、流程控制□C Shell一、變數(shù)二、執(zhí)行命令三、流程控制□附錄A expr命令□附錄B test命令□前言在Dos 中,你可能會從事一些例行的重覆性工作,此時你會將這些重覆性的命令寫 成批次檔,只要執(zhí)行這個批次檔就等於執(zhí)行這些命令 。大家會問在Unix中是否有批次處 理這個東東,答案是有的 。在UNIX中不只有如DOS 的批次處理,它的功能比起DOS 更強 大,相對地也較復(fù)雜,已經(jīng)和一般的高階語言不相上下 。在UNIX中大家都不叫做批次檔,而叫做Shell Script 。一般而言,Shell Script的地位和其它的可執(zhí)行檔(或命令)是完全相同的,只不 過Shell Script是以文字檔的方式儲存,而非二進位檔 。而執(zhí)行Shell Script時,必須 有一個程式將其內(nèi)容轉(zhuǎn)成一道道的命令執(zhí)行,而這個程式其實就是Shell,這也就是為 什麼我們叫做Shell Script的原因(往後我們稱為Script) 。不同Shell 的Script基本 上會有一些差異,所以我們不能將寫給A shell 的Script用B shell 執(zhí)行 。而在UNIX中 大家最常使用Bourne Shell以及C Shell,所以這堂課就介紹這兩種Script的寫法 ?!鯇⑽淖謾n設(shè)為可執(zhí)行的Shell Script如果我們已經(jīng)寫好Script,如何將其設(shè)成可執(zhí)行檔呢?因為Script其實是一個可執(zhí) 行檔,所以必須將其存取權(quán)設(shè)定成可執(zhí)行 。我們可以使用下列命令更改存取權(quán):chmod u x filename 只有自己可以執(zhí)行,其它人不能執(zhí)行chmod ug x filename 只有自己以及同一群可以執(zhí)行,其它人不能執(zhí)行chmodx filename 所有人都可以執(zhí)行而我們?nèi)绾沃付ㄊ褂媚且粋€Shell 來解釋所寫的Script呢?幾種基本的指定方式如 下所述:1. 如果Script的第一個非空白字元不是"#",則它會使用Bourne Shell 。2. 如果Script的第一個非空白字元是"#"時,但不以"#!"開頭時,則它會使用C Shell 。3. 如果Script以"#!"開頭,則"#!"後面所寫的就是所使用的Shell,而且要將整個路徑 名稱指出來 。這里建議使用第三種方式指定Shell,以確保所執(zhí)行的就是所要的 。Bourne Shell的路 徑名稱為/bin/sh,而C Shell 則為/bin/csh 。除了在Script內(nèi)指定所使用的Shell 外,你也可以在命令列中強制指定 。比如你要 用C Shell 執(zhí)行某個Script,你可以下這個命令:csh filename此時的Script的存取權(quán)就不一定要為可執(zhí)行檔,其內(nèi)部所指定的Shell 也會無效,詳細 的情形後面會討論 ?!鮏cript的基本結(jié)構(gòu)及觀念 Script是以行為單位,我們所寫的Script會被分解成一行一行來執(zhí)行 。而每一行可 以是命令、注解、或是流程控制指令等 。如果某一行尚未完成,可以在行末加上"",這個時候下一行的內(nèi)容就會接到這一行的後面,成為同一行,如下echo the message istoo long so we haveto split it intoseveral lines.當Script中出現(xiàn)"#" 時,再它後面的同一行文字即為注解,Shell 不會對其翻譯 。在Script中要執(zhí)行一個命令的方法和在命令列中一樣,你可以前景或背景執(zhí)行,執(zhí) 行命令時也會需要設(shè)定一些環(huán)境變數(shù) 。Script的流程控制和一般高階語言的流程控制沒有什麼兩樣,也和高階語言一樣有 副程式 。這些使得Script的功能更加強大 。為了達到與高階語言相同的效果,我們也可以在Script中設(shè)定變數(shù),如此使Script 成為一個名付其實的高階語言 。□Bourne Shell一、變數(shù)Bourne Shell的變數(shù)型態(tài)只有字串變數(shù),所以要使用數(shù)值運算則必須靠外部命令達 成目的 。而其變數(shù)種類有下列幾種:1. 使用者變數(shù) 這是最常使用的變數(shù),我們可以任何不包含空白字元的字串來當做變數(shù)名稱 。設(shè)定變數(shù)值時則用下列方式:var=string 取用變數(shù)時則在變數(shù)名稱前加上一"$" 號 。name=Tomecho nameecho $name結(jié)果如下:nameTom2. 系統(tǒng)變數(shù)(環(huán)境變數(shù))和使用者變數(shù)相似,只不過此種變數(shù)會將其值傳給其所執(zhí)行的命令 。要將一使 用者變數(shù)設(shè)定為系統(tǒng)變數(shù),只要加上:export varname=Tomexport name以下是使用者一進入系統(tǒng)之後就已設(shè)定好的系統(tǒng)變數(shù):$HOME 使用者自己的目錄$PATH 執(zhí)行命令時所搜尋的目錄$TZ 時區(qū)$MAILCHECK 每隔多少秒檢查是否有新的信件$PS1 在命令列時的提示號$PS2 當命令尚未打完時,Shell 要求再輸入時的提示號$MANPATH man 指令的搜尋路徑3. 唯讀的使用者變數(shù)和使用者變數(shù)相似,只不過這些變數(shù)不能被改變 。要將使用者變數(shù)設(shè)成唯讀的,只要加上:readonly var 而若只打readonly則會列出所有唯讀的變數(shù).還有一點,系統(tǒng)變數(shù)不可以設(shè)定 成唯讀的 。name=Tomreadonly nameecho $name

推薦閱讀