shell編程中使用到得if語句內判斷參數
–b當file存在並且是塊文件時返回真
-c當file存在並且是字符文件時返回真
-d當pathname存在並且是一個目錄時返回真
-e當pathname指定的文件或目錄存在時返回真
-f當file存在並且是正規文件時返回真
-g當由pathname指定的文件或目錄存在並且設置了SGID位時返回爲真
-h當file存在並且是符號鏈接文件時返回真,該選項在一些老系統上無效
-k當由pathname指定的文件或目錄存在並且設置了“粘滯”位時返回真
-p當file存在並且是命令管道時返回爲真
-r當由pathname指定的文件或目錄存在並且可讀時返回爲真
-s當file存在文件大小大於0時返回真
-u當由pathname指定的文件或目錄存在並且設置了SUID位時返回真
-w當由pathname指定的文件或目錄存在並且可執行時返回真。一個目錄爲了它的內容被訪問必然是可執行的。
-o當由pathname指定的文件或目錄存在並且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。
UNIXShell裏面比較字符寫法:
-eq等於
-ne不等於
-gt大於
-lt小於
-le小於等於
-ge大於等於
-z空串
=兩個字符相等
!=兩個字符不等
-n非空串
-------------------------------------------------------------------------
更爲詳細的說明:
運算符描述示例
文件比較運算符
-efilename如果filename存在,則爲真[-e/var/log/syslog]
-dfilename如果filename爲目錄,則爲真[-d/tmp/mydir]
-ffilename如果filename爲常規文件,則爲真[-f/usr/bin/grep]
-Lfilename如果filename爲符號鏈接,則爲真[-L/usr/bin/grep]
-rfilename如果filename可讀,則爲真[-r/var/log/syslog]
-wfilename如果filename可寫,則爲真[-w/var/mytmp.txt]
-xfilename如果filename可執行,則爲真[-L/usr/bin/grep]
filename1-ntfilename2如果filename1比filename2新,則爲真[/tmp/install/etc/services-nt/etc/services]
filename1-otfilename2如果filename1比filename2舊,則爲真[/boot/bzImage-otarch/i386/boot/bzImage]
字符串比較運算符(請注意引號的使用,這是防止空格擾亂代碼的好方法)
-zstring如果string長度爲零,則爲真[-z$myvar]
-nstring如果string長度非零,則爲真[-n$myvar]
string1=string2如果string1與string2相同,則爲真[$myvar=onetwothree]
string1!=string2如果string1與string2不同,則爲真[$myvar!=onetwothree]
算術比較運算符
num1-eqnum2等於[3-eq$mynum]
num1-nenum2不等於[3-ne$mynum]
num1-ltnum2小於[3-lt$mynum]
num1-lenum2小於或等於[3-le$mynum]
num1-gtnum2大於[3-gt$mynum]
num1-genum2大於或等於[3-ge$mynum]
腳本示例:
#!/bin/bash
#Thisscriptprintsamessageaboutyourweightifyougiveityour
#weightinkilosandhightincentimeters.
if[!$#==2];then
echo"Usage:$0weight_in_kiloslength_in_centimeters"
exit
fi
weight="$1"
height="$2"
idealweight=$[$height-110]
if[$weight-le$idealweight];then
echo"Youshouldeatabitmorefat."
else
echo"Youshouldeatabitmorefruit."
fi
#weight.sh70150
Youshouldeatabitmorefruit.
#weight.sh7015033
Usage:./weight.shweight_in_kiloslength_in_centimeters
位置參數$1,$2,...,$N,$#代表了命令行的參數數量,$0代表了腳本的名字,
第一個參數代表$1,第二個參數代表$2,以此類推,參數數量的總數存在$#中,上面的例子顯示了怎麼改變腳本,如果參數少於或者多餘2個來打印出一條消息。
執行,並查看情況。
#bash-xtijian.sh60170
+weight=60
+height=170
+idealweight=60
+'['60-le60']'
+echo'Youshouldeatabitmorefat.'
Youshouldeatabitmorefat.
其中-x用來檢查腳本的執行情況。