#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 //先對文件進行壓縮
mv $1.gz $HOME/dustbin //移動到回收站
echo “File $1 is deleted !”
fi
三、變量表達(dá)式
在上面我們編寫的小程序中我們用到了一個關(guān)鍵字test,其實它是shell程序中的一個表達(dá)式?D?D比較(test)。通過和shell提供的if等條件語句(后面我們會介紹)相結(jié)合我們可以方便的完判斷。
其用法如下:
test 表達(dá)式
表達(dá)式所代表的操作符有字符串操作符、數(shù)字操作符、邏輯操作符以及文件操作符。其中文件操作符是一種shell獨特的操作符,因為shell里的變量都是字符串,為了達(dá)到對文件進行操作的目的,于是才提供了這樣的一種操作符。
1、 字符串比較
作用:測試字符串是否相等、長度是否為零,字符串是否為NULL(注:bash區(qū)分零長度字符串和空字符串)
常用的字符穿操作符有:
= 比較兩個字符串是否相同,同則為“是”!= 比較兩個字符串是否相同,不同則為“是”
-n 比較字符串長度是否大于零,如果大于零則為“是”
-z 比較字符串的穿度是否等于零,如果等于則為“是”
2、 數(shù)字比較
這里區(qū)別于其他編程語言,test語句不使用>?類似的符號來表達(dá)大小的比較,而是用整數(shù)式來表示這些。
-eq 相等
-ge 大于等于
-le 小于等于
-ne 不等于
-gt 大于
-lt 小于
3、 邏輯操作! 反:與一個邏輯值相反的邏輯值
-a 與(and):兩個邏輯值為“是”返回值才為“是”,反之為“否”
-o 或(or):兩個邏輯值有一個為“是”,返回值就為“是”
4、 文件操作
文件測試表達(dá)式通常是為了測試文件的信息,一般由腳本來決定文件是否應(yīng)該備份、復(fù)制或刪除。由于test關(guān)于文件的操作符有很多,我們只列舉一些常用的。
-d 對象存在且為目錄返回值為“是”
-f 對象存在且為文件返回值為“是”
-L 對象存在且為符號連接返回值為“是”
-r 對象存在且可讀則返回值為“是”
-s 對象存在且長度非零則返回值為“是”
-w 對象存在且可寫則返回值為“是”
-x 對象存在且可執(zhí)行則返回值為“是”
file1 ?Cnt(-ot) file2 文件1比文件2新(舊)
四、循環(huán)結(jié)構(gòu)語句
shell常見的循環(huán)語句有for循環(huán)、while循環(huán)、until循環(huán)
for 循環(huán)
語法:for 變量 in 列表
do
操作
done
注:變量是要在循環(huán)內(nèi)部用來指代當(dāng)前所指代的列表中的那個對象的。
列表是在for 循環(huán)的內(nèi)部要操作的對象,可以是字符串也可以是文件,如果是文件則為文件名。
例:刪除垃圾箱中的所有.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!
聯(lián)系客服