Shell脚本中判断输入参数个数的方法
$#代表了命令行的参数数量,可以看以下实例:
if[$#!=1];then echo"USAGE:$0TABNAME" echo"e.g.:$0CDR_CALL_20040701" exit1; fi
位置参数$1,$2,...,$N,$#代表了命令行的参数数量,$0代表了脚本的名字
-ne 不等于
-----------------------
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