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用来检查脚本的执行情况。