Linux下的shell編程入門 (2)
下面我們利用內(nèi)部變量和位置參數(shù)編寫一個(gè)名為del的簡(jiǎn)單刪除程序: #name: del #author: liangnian #this program to compress a file to the dustbin if test $# -eq 0 then echo “Please specify a file!” else gzip $1 //先對(duì)文件進(jìn)行壓縮 mv $1.gz $HOME/dustbin //移動(dòng)到回收站 echo “File $1 is deleted !” fi 三、變量表達(dá)式 在上面我們編寫的小程序中我們用到了一個(gè)關(guān)鍵字test,其實(shí)它是shell程序中的一個(gè)表達(dá)式?D?D比較(test)。通過和shell提供的if等條件語(yǔ)句(后面我們會(huì)介紹)相結(jié)合我們可以方便的完判斷。 其用法如下: test 表達(dá)式 表達(dá)式所代表的操作符有字符串操作符、數(shù)字操作符、邏輯操作符以及文件操作符。其中文件操作符是一種shell獨(dú)特的操作符,因?yàn)閟hell里的變量都是字符串,為了達(dá)到對(duì)文件進(jìn)行操作的目的,于是才提供了這樣的一種操作符。 1、 字符串比較 作用:測(cè)試字符串是否相等、長(zhǎng)度是否為零,字符串是否為NULL(注:bash區(qū)分零長(zhǎng)度字符串和空字符串) 常用的字符穿操作符有: = 比較兩個(gè)字符串是否相同,同則為“是”!= 比較兩個(gè)字符串是否相同,不同則為“是” -n 比較字符串長(zhǎng)度是否大于零,如果大于零則為“是” -z 比較字符串的穿度是否等于零,如果等于則為“是” 2、 數(shù)字比較 這里區(qū)別于其他編程語(yǔ)言,test語(yǔ)句不使用>?類似的符號(hào)來(lái)表達(dá)大小的比較,而是用整數(shù)式來(lái)表示這些。 -eq 相等 -ge 大于等于 -le 小于等于 -ne 不等于 -gt 大于 -lt 小于 3、 邏輯操作! 反:與一個(gè)邏輯值相反的邏輯值 -a 與(and):兩個(gè)邏輯值為“是”返回值才為“是”,反之為“否” -o 或(or):兩個(gè)邏輯值有一個(gè)為“是”,返回值就為“是” 4、 文件操作 文件測(cè)試表達(dá)式通常是為了測(cè)試文件的信息,一般由腳本來(lái)決定文件是否應(yīng)該備份、復(fù)制或刪除。由于test關(guān)于文件的操作符有很多,我們只列舉一些常用的。 -d 對(duì)象存在且為目錄返回值為“是” -f 對(duì)象存在且為文件返回值為“是” -L 對(duì)象存在且為符號(hào)連接返回值為“是” -r 對(duì)象存在且可讀則返回值為“是” -s 對(duì)象存在且長(zhǎng)度非零則返回值為“是” -w 對(duì)象存在且可寫則返回值為“是” -x 對(duì)象存在且可執(zhí)行則返回值為“是” file1 ?Cnt(-ot) file2 文件1比文件2新(舊) 四、循環(huán)結(jié)構(gòu)語(yǔ)句 shell常見的循環(huán)語(yǔ)句有for循環(huán)、while循環(huán)、until循環(huán) for 循環(huán) 語(yǔ)法:for 變量 in 列表 do 操作 done 注:變量是要在循環(huán)內(nèi)部用來(lái)指代當(dāng)前所指代的列表中的那個(gè)對(duì)象的。 列表是在for 循環(huán)的內(nèi)部要操作的對(duì)象,可以是字符串也可以是文件,如果是文件則為文件名。 例:刪除垃圾箱中的所有.gz文件 #delete all file with extension of “gz” in the dustbin for I in $HOME/dustbin/*.gz do rm ?Cf $i echo “$i has been deleted!” done 執(zhí)行結(jié)果如下: [beichen@localhost bin]$.f_rmgz /home/beichen/dustbin/nessus-4.0.0.2.tar.gz has been deleted! /home/beichen/dustbin/gftp-2.2.1.tar.gz has been deleted! 來(lái)源:Chinaitlab |
|
來(lái)自: 惡之一眉 > 《Shell script》