九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
在Linux世界馳騁系列之二——Shell編程語(yǔ)法
算術(shù)運(yùn)算

  bash中執(zhí)行整數(shù)算術(shù)運(yùn)算的命令是let,其語(yǔ)法格式為:

let arg …

   其中,arg是單獨(dú)的算術(shù)表達(dá)式。這里的算術(shù)表達(dá)式使用C語(yǔ)言中表達(dá)式的語(yǔ)法、優(yōu)先級(jí)和結(jié)合性。除++、--和逗號(hào)(,)之外,所有整型運(yùn)算符都得到支 持。此外,還提供了方冪運(yùn)算符“**”。命名的參數(shù)可以在算術(shù)表達(dá)式中直接利用名稱訪問(wèn),不要前面帶有“$”符號(hào)。當(dāng)訪問(wèn)命名參數(shù)時(shí),就作為算術(shù)表達(dá)式計(jì) 算它的值。算術(shù)表達(dá)式按長(zhǎng)整數(shù)進(jìn)行求值,并且不檢查溢出。當(dāng)然,用0作除數(shù)就產(chǎn)生錯(cuò)誤。

  let 命令的替代表示形式是:

((算術(shù)表達(dá)式))

  例如,let ″j=i*6+2″等價(jià)于((j=i*6+2))。

  如果表達(dá)式的值是非0,那么返回的狀態(tài)值是0;否則,返回的狀態(tài)值是1。

  當(dāng)表達(dá)式中有Shell的特殊字符時(shí),必須用雙引號(hào)將其括起來(lái)。例如,let ″val=a|b″。如果不括起來(lái),Shell會(huì)把命令行l(wèi)et val=a|b中的“|”看成管道符,將其左右兩邊看成不同的命令,因而無(wú)法正確執(zhí)行。

  控制結(jié)構(gòu)

  Shell具有一般高級(jí)程序設(shè)計(jì)語(yǔ)言所具有的控制結(jié)構(gòu)和其它的復(fù)雜功能,如if語(yǔ)句、 case語(yǔ)句、循環(huán)結(jié)構(gòu)、函數(shù)等。其實(shí)在Shell中,這些控制結(jié)構(gòu)也稱作“命令”。為了程序設(shè)計(jì)的習(xí)慣,才把它們稱作語(yǔ)句。

  1.if語(yǔ)句

  if語(yǔ)句用于條件控制結(jié)構(gòu)中,其一般格式為:

if 測(cè)試條件
then 命令1
else 命令2
fi

其中,if、then、else和fi是關(guān)鍵字。例如:if test -f "$1"
then echo "$1 is an ordinary file . "
else echo "$1 is not an ordinary file . "
fi
應(yīng)該注意,if語(yǔ)句中else部分可以缺省。另外,if 語(yǔ)句的else部分還可以是else—if結(jié)構(gòu),此時(shí)可以用關(guān)鍵字“elif”代替“else if”。

  通常,if的測(cè)試部分是利用test命令實(shí)現(xiàn)的。其實(shí),條件測(cè)試可以利用一般命令執(zhí)行成功與否來(lái)作判斷。如果命令正常結(jié)束,則表示執(zhí)行成功,其返回值為0,條件測(cè)試為真;如果命令執(zhí)行不成功,其返回值不等于0,條件測(cè)試就為假。所以if的語(yǔ)句的更一般形式是:

if 命令表1
then 命令表2
else 命令表3
fi

  2.條件測(cè)試

   條件測(cè)試有三種常用形式:一種是用test命令,如上所示。另一種是用一對(duì)方括號(hào)將測(cè)試條件括起來(lái)。這兩種形式是完全等價(jià)的。例如,測(cè)試位置參數(shù)$1是 否是已存在的普通文件,可寫(xiě)為test -f "$1"。也可寫(xiě)成[ -f "$1" ]。利用一對(duì)方括號(hào)表示條件測(cè)試時(shí),在左方括號(hào)“[”之后、右方括號(hào)“]”之前各應(yīng)有一個(gè)空格。

  第三種形式是:

[[條件表達(dá)式]]

  test命令可以和多種系統(tǒng)運(yùn)算符一起使用。這些運(yùn)算符可以分為四類:文件測(cè)試運(yùn)算符(文件的屬性及權(quán)限等)、字符串測(cè)試運(yùn)算符(兩個(gè)串是否相同及是否為空)、數(shù)值測(cè)試運(yùn)算符(大小關(guān)系)和邏輯運(yùn)算符(邏輯與、或、非)。

  3.case語(yǔ)句

  case語(yǔ)句允許進(jìn)行多重條件選擇。其一般語(yǔ)法形式是:

case  字符串 in
模式字符串1) 命令

命令;;
模式字符串2) 命令

命令;;

模式字符串n) 命令

命令;;
esac

其執(zhí)行過(guò)程是用“字符串”的值依次與各模式字符串進(jìn)行比較,如果發(fā)現(xiàn)同某一個(gè)匹配,那么就執(zhí)行該模式字符串之后的各個(gè)命令,直至遇到兩個(gè)分號(hào)為止。如果沒(méi)有任何模式字符串與該字符串的值相符合,則不執(zhí)行任何命令。

  在使用case語(yǔ)句時(shí)應(yīng)注意:

  (1)每個(gè)模式字符串后面可有一條或多條命令,其最后一條命令必須以兩個(gè)分號(hào)(即;;)結(jié)束。

 ?。?)模式字符串中可以使用通配符。

 ?。?) 如果一個(gè)模式字符串中包含多個(gè)模式,那么各模式之間應(yīng)以豎線(|)隔開(kāi),表示各模式是“或”的關(guān)系,即只要給定字符串與其中一個(gè)模式相配,就會(huì)執(zhí)行其后的命令表。

 ?。?)各模式字符串應(yīng)是惟一的,不應(yīng)重復(fù)出現(xiàn)。并且要合理安排它們的出現(xiàn)順序。例如,不應(yīng)將“*”作為頭一個(gè)模式字符串,因?yàn)?#8220;*”可以與任何字符串匹配,它若第一個(gè)出現(xiàn),就不會(huì)再檢查其它模式了。

 ?。?)case語(yǔ)句以關(guān)鍵字case開(kāi)頭,以關(guān)鍵字esac(是case倒過(guò)來(lái)寫(xiě)!)結(jié)束。

  (6)case的退出(返回)值是整個(gè)結(jié)構(gòu)中最后執(zhí)行的那個(gè)命令的退出值。若沒(méi)有執(zhí)行任何命令,則退出值為零。

  4. while語(yǔ)句

  Shell中有三種用于循環(huán)的語(yǔ)句,它們是while語(yǔ)句、for語(yǔ)句和until語(yǔ)句。

  while語(yǔ)句的一般形式是:

while 測(cè)試條件 
do
命令表
done

  其執(zhí)行過(guò)程是,先進(jìn)行條件測(cè)試,如果結(jié)果為真,則進(jìn)入循環(huán)體(do—done之間部分), 執(zhí)行其中命令;然后再做條件測(cè)試……直至測(cè)試條件為假時(shí)才終止while語(yǔ)句的執(zhí)行。例如:

while [ $1 ]
do
if [ -f $1 ]
then echo "display : $1 "
cat $1
else echo "$1 is not a file name . "
fi
shift
done

這段程序?qū)Ω鱾€(gè)給定的位置參數(shù),首先判斷其是否是普通文件,若是,則顯示其內(nèi)容;否則,顯示它不是文件名的信息。每次循環(huán)處理一個(gè)位置參數(shù)$1,利用shift命令可把后續(xù)位置參數(shù)左移。

  測(cè)試條件部分除使用test命令或等價(jià)的方括號(hào)外,還可以是一組命令。根據(jù)其最后一個(gè)命令的退出值決定是否進(jìn)入循環(huán)體執(zhí)行。

  5.until語(yǔ)句

  until語(yǔ)句的一般形式是:

until  測(cè)試條件
do
命令表
done

  它與while語(yǔ)句很相似,只是測(cè)試條件不同:當(dāng)測(cè)試條件為假時(shí),才進(jìn)入循環(huán)體,直至測(cè)試條件為真時(shí)終止循環(huán)。

  6.for語(yǔ)句

  for語(yǔ)句是最常用的建立循環(huán)結(jié)構(gòu)的語(yǔ)句。其使用格式主要有三種,取決于循環(huán)變量的取值方式。格式一:

for 變量 in 值表
do
命令表
done

  例如:

for day in Monday Wednesday Friday Sunday
do
echo $day
done

   其執(zhí)行過(guò)程是,變量day依次取值表中各字符串,即第一次將“Monday”賦給day,然后進(jìn)入循環(huán)體,執(zhí)行其中的命令,顯示出Monday。第二次 將“Wednesday”賦給day,然后執(zhí)行循環(huán)體中命令,顯示出Wednesday。依次處理,當(dāng)day把值表中各字符串都取過(guò)一次之后,下面day 的值就變?yōu)榭沾?,從而結(jié)束for循環(huán)。因此,值表中字符串的個(gè)數(shù)就決定了for循環(huán)執(zhí)行的次數(shù)。在格式上,值表中各字符串之間以空格隔開(kāi)。

  格式二:

for 變量 in 文件正則表達(dá)式
do
命令表
done

  其執(zhí)行過(guò)程是,變量的值依次取當(dāng)前目錄下(或給定目錄下)與正則表達(dá)式相匹配的文件名,每取值一次,就進(jìn)入循環(huán)體執(zhí)行命令表,直至所有匹配的文件名取完為止,退出for循環(huán)。

格式三:for i in $*  或者   for i 
do            do
命令表          命令表
done           done

  這兩種形式是等價(jià)的。其執(zhí)行過(guò)程是,變量i 依次取位置參數(shù)的值,然后執(zhí)行循環(huán)體中的命令表,直至所有位置參數(shù)取完為止。

  7.break命令和continue命令

  break命令可以使我們從循環(huán)體中退出來(lái)。其語(yǔ)法格式是:

break [ n ]

  其中,n表示要跳出幾層循環(huán)。默認(rèn)值是1,表示只跳出一層循環(huán)。

  continue命令跳過(guò)循環(huán)體中在它之后的語(yǔ)句,回到本層循環(huán)的開(kāi)頭,進(jìn)行下一次循環(huán)。其語(yǔ)法格式是:

continue [ n ]

  其中,n表示從包含continue語(yǔ)句的最內(nèi)層循環(huán)體向外跳到第幾層循環(huán)。默認(rèn)值為1。循環(huán)層數(shù)是由內(nèi)向外編號(hào)。

  函數(shù)

  在Shell腳本中可以定義并使用函數(shù)。其定義格式為:

[function]函數(shù)名( )
{ 
命令表
}

  其中,關(guān)鍵字function可以缺省。

   函數(shù)應(yīng)先定義,后使用。調(diào)用函數(shù)時(shí),直接利用函數(shù)名,如showfile,不必帶圓括號(hào),就像一般命令那樣使用。Shell腳本與函數(shù)間的參數(shù)傳遞可利 用位置參數(shù)和變量直接傳遞。變量的值可以由Shell腳本傳遞給被調(diào)用的函數(shù),而函數(shù)中所用的位置參數(shù)$1、$2,等對(duì)應(yīng)于函數(shù)調(diào)用語(yǔ)句中的實(shí)參,這一點(diǎn) 是與普通命令不同的。下面是使用函數(shù)的示例:

#func is a function name
# it echos the values of variables and arguments
func( )
{
echo "Let's begin now. "
echo $a $b $c
echo $1 $2 $3
echo "The end. "
}
a=" Working directory "
b="is"
c=`pwd`
func Welcome You Byby
echo "Today is ` date ` "

  Shell中的函數(shù)把若干命令集合在一起,通過(guò)一個(gè)函數(shù)名加以調(diào)用。如果需要,還可被多次調(diào)用。執(zhí)行函數(shù)并不創(chuàng)建新的進(jìn)程,是通過(guò)Shell進(jìn)程執(zhí)行。

  通常,函數(shù)中的最后一個(gè)命令執(zhí)行之后,就退出被調(diào)函數(shù)。也可利用return命令立即退出函數(shù),其語(yǔ)法格式是:

return [ n ]

  其中,n值是退出函數(shù)時(shí)的退出值(退出狀態(tài)),即$?的值。當(dāng)n值缺省時(shí),則退出值是最后一個(gè)命令執(zhí)行后的退回值。

  本講介紹了有關(guān)Shell編程的知識(shí)和示例,從中可以體會(huì)到bash的特點(diǎn)和長(zhǎng)處。很顯然,對(duì)于系統(tǒng)管理員來(lái)說(shuō),利用bash編寫(xiě)腳本解決問(wèn)題,可以大大減輕工作強(qiáng)度,有效提高編程效率。建議讀者多上機(jī)練習(xí)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
萬(wàn)字總結(jié) | 完全掌握Shell編程
shell淺談之三for、while、until循環(huán)
初識(shí) Shell腳本 - 語(yǔ)法
第三章:vbscript教案
批處理中的字符串處理詳解
JavaScript基本語(yǔ)法(全)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服