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

中 Unix系列shell程序編寫( 三 )


int1 -ne int2兩數(shù)不等為真
int1 -gt int2int1大于int2為真
int1 -ge int2int1大于等于int2為真
int1 -lt int2int1小于int2為真
int1 -le int2int1小于等于int2為真下面的例子反映了字符串比較與數(shù)字比較的不同:$str1=1234
$str2=01234
$test $str1 = $str2
$echo $?
結(jié)果顯示:1
$test $str1 -eq $str2
$echo $?
結(jié)果顯示:03>有關(guān)文件的測(cè)試使用test進(jìn)行的第三類測(cè)試是測(cè)試文件的狀態(tài),用戶可以測(cè)試文件是否存在,是否可寫以及其他文件屬性 。下面是文件測(cè)試時(shí)使用的選項(xiàng) 。注意只有文件存在時(shí),才有可能為真 。-r file 用戶可讀為真
-w file 用戶可寫為真
-x file 用戶可執(zhí)行為真
-f file 文件為正規(guī)文件為真
-d file 文件為目錄為真
-c file 文件為字符特殊文件為真
-b file 文件為塊特殊文件為真
-s file 文件大小非0時(shí)為真
-t file 當(dāng)文件描述符(默認(rèn)為1)指定的設(shè)備為終端時(shí)為真
4>復(fù)雜的條件測(cè)試(and 、or 、not)
-a與
-o或
!非
就是組合條件了,任何高級(jí)語(yǔ)言中都有的(NOT 、AND 、OR),例如:
$test -r em.null -a -s em.null
$echo $?
結(jié)果顯示:1
說(shuō)明了em.null并不是可讀并且非空的文件5>另一種執(zhí)行test的方法bsh中還有另一種執(zhí)行test命令的方法,就是把測(cè)試條件放到一對(duì)[ ]中,例如:
$int1=4
$[ $int1 -gt 2 ]
$echo $?
結(jié)果顯示:0
要注意在[ 的后面和 ]符號(hào)的前面要有一個(gè)空格 。
下面我們用test命令寫個(gè)簡(jiǎn)單但比較完善的程序:#-- 備份程序

#-- 檢查參數(shù)
if [ $# -ne 1 ]
thenecho "請(qǐng)?jiān)诔绦蛎竺嬷赋鲆獋浞菸募谀夸?"
exit 1
fi
#-- 檢查目錄名是否有效
if [ !-d "$1" ]
then
echo "$1 不是一個(gè)目錄!"
exit 2
fi
cd $1
ls -a | cpio -o >/dev/mnt0
if [ $? -eq 0 ]
then
rm *
else
echo "cpio執(zhí)行不成功!備份失敗..."
exit 3
fi6>空命令在Bsh中用 : 代表空命令,就是充個(gè)數(shù),什么都不做【中 Unix系列shell程序編寫】7>嵌套if語(yǔ)句和elif結(jié)構(gòu)檢查條件1
A:當(dāng)條件1為真,則執(zhí)行一部分操作
B:若條件1為假,檢查條件2
1)若條件2為真,執(zhí)行另外一部分操作
2)若條件2為假,檢查條件3
3)若條件3為真,執(zhí)行其他一部分操作
語(yǔ)法如下:
if command
then
command
else
if command
then
command
else
if command
then
command
fi
fi
fi8>elif語(yǔ)句嵌套if語(yǔ)句有時(shí)會(huì)給用戶帶來(lái)混亂,特別是什么時(shí)候fi語(yǔ)句很難判斷 。因此Bourne Shell又提供了elif語(yǔ)句 。elif是else-if的縮寫,它表示是if語(yǔ)句的繼續(xù) 。格式為:if command
then
command
elif command
then
command
elif command
then
command
fi上面介紹的嵌套if語(yǔ)句和elif語(yǔ)句完成相同的功能,用戶可以根據(jù)自己的喜好選擇一種使用 。9>case語(yǔ)句前面說(shuō)的elif語(yǔ)句替代if-then-else語(yǔ)句,但有時(shí)在編程時(shí)還會(huì)遇到對(duì)同一變量進(jìn)行多次的測(cè)試,該情況可以用多個(gè)elif語(yǔ)句實(shí)現(xiàn),但還有一種更簡(jiǎn)單的方法就是用case語(yǔ)句 。case語(yǔ)句不但取代了多個(gè)elif和then語(yǔ)句,還可以用變量值對(duì)多個(gè)模式進(jìn)行匹配,當(dāng)某個(gè)模式與變量值匹配后,其后的一系列命令將被執(zhí)行,下面是case語(yǔ)句使用的語(yǔ)句 。case value in
pattem 1)
command
command
pattem 2)
command
command
....
pattem)
command;
esaccase語(yǔ)句只執(zhí)行其中的一組命令,當(dāng)變量值與多個(gè)模式相匹配時(shí),只有第一個(gè)匹配的模式對(duì)應(yīng)的命令被執(zhí)行 。";;"表示該模式對(duì)應(yīng)的命令部分程序 。通過(guò)學(xué)習(xí)下面的read語(yǔ)句,我們們?cè)倥e例子說(shuō)明case語(yǔ)句的用法 。10>read語(yǔ)句Shell程序不但可以通過(guò)命令行參數(shù)得到輸入數(shù)據(jù),還可以使用read命令提示用戶輸入數(shù)據(jù),其語(yǔ)法格式為:read var1 var2... ...varn當(dāng)Bsh遇到一個(gè)read語(yǔ)句時(shí),在標(biāo)準(zhǔn)輸入文件中讀取數(shù)據(jù)直到一個(gè)換行符 。此時(shí)Shell在解釋輸入行時(shí),不進(jìn)行文件名或變量的替換,只是簡(jiǎn)單地刪除多余的空格 。然后Shell將輸入行的第一個(gè)字的內(nèi)容給變量1,第二個(gè)給變量2,直到所有變量都賦上值或是輸入行為空 。若輸入行中字的個(gè)數(shù)超過(guò)變量個(gè)數(shù),Shell將把輸入行中剩余的所有字的內(nèi)容都賦給最后一個(gè)變量 。當(dāng)變量個(gè)數(shù)多于輸入行字的個(gè)數(shù)時(shí)候,多于的變量將賦一個(gè)空值 。輸入行的每一個(gè)字是由空格分隔的一個(gè)字母和數(shù)字組成的字符串 。$read var1 var2 var3

推薦閱讀