Shell脚本下条件测试(eq.ne.....)(转载)

  转载:http://cxj632840815.blog.51cto.com/3511863/1168709

Shell编程中的条件测试

在Linux编程中经常会用到判断数值的大小,字符串是否为空这样或那样的条件测试语句

今天说说Linux中的常用的条件测试语句

1,判断两个数字的大小

-eq 相等或等于

-ne 不想等或不等于

-gt 第一个数大于第二个数

-lt 第一个数小于第二个数

-le 第一个数小于等于第二个数

-ge 第一个数大于等于第二个数

  -z 空串

  = 两个字符相等

  != 两个字符不等

  -n 非空串

例如

2,判断两个字符串

= 两个字符串相等

!= 两个字符串不相等

-z 字符串为空

-n 字符串不为空

例如

3,文件测试

-d 测试是否为目录

-f 测试是否为文件

-s 测试文件是否非空

-x 测试文件是否可执行

-r 测试文件是否可读

-w 测试文件时候可写

例如

4,逻辑操作符

-a 逻辑与,相当于和

-o 逻辑或

! 逻辑非

例如if [-d /etc ] -a [ -z s ] ;then

echo "/etc is directory and s is not blank"

fi

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所指定的用户拥有时返回真。

  -------------------------------------------------------------------------

  更为详细的说明:

  运算符 描述 示例

  文件比较运算符

  -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]

  -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]

  -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

  -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]

  -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]

  -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]

  -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]

  filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

  filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

  字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)-z string 如果 string 长度为零,则为真 [ -z $myvar ]

  -n string 如果 string 长度非零,则为真 [ -n $myvar ]

  string1 = string2 如果 string1 与 string2 相同,则为真 [ $myvar = one two three ]

  string1 != string2 如果 string1 与 string2 不同,则为真 [ $myvar != one two three ]

  算术比较运算符

  num1 -eq num2 等于 [ 3 -eq $mynum ]

  num1 -ne num2 不等于 [ 3 -ne $mynum ]

  num1 -lt num2 小于 [ 3 -lt $mynum ]

  num1 -le num2 小于或等于 [ 3 -le $mynum ]

  num1 -gt num2 大于 [ 3 -gt $mynum ]

  num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

  脚本示例:

  #!/bin/bash

  # This script prints a message about your weight if you give it your

  # weight in kilos and hight in centimeters.

  if [ ! $# == 2 ]; then

  echo "Usage: $0 weight_in_kilos length_in_centimeters"

  exit

  fi

  weight="$1"

  height="$2"

  idealweight=$[$height - 110]

  if [ $weight -le $idealweight ] ; then

  echo "You should eat a bit more fat."

  else

  echo "You should eat a bit more fruit."

  fi

  # weight.sh 70 150

  You should eat a bit more fruit.

  # weight.sh 70 150 33

  Usage: ./weight.sh weight_in_kilos length_in_centimeters

  位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字,

  第一个参数代表$1,第二个参数代表$2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。

  执行,并查看情况。

  # bash -x tijian.sh 60 170

  + weight=60

  + height=170

  + idealweight=60

  + ‘[‘ 60 -le 60 ‘]‘

  + echo ‘You should eat a bit more fat.‘

  You should eat a bit more fat.

  其中-x用来检查脚本的执行情况。

时间: 2024-10-10 06:02:48

Shell脚本下条件测试(eq.ne.....)(转载)的相关文章

《跟老男孩学Linux运维之shell编程实战》-第五章 shell脚本的条件测试

本文的知识点是关于shell脚本的条件测试的相关内容. 通常在shell脚本中我们需要做各式各样的条件判断,比如,测试一个文件是否存在.是否为文件或目录.是否 具有执行权限等等,所以在shell脚本中,条件判断还是至关重要的.接下来我们进入正题:shell脚本的条件测试. 1.在bash编程中,条件测试常用的语法形式如下表: 提示: 语法1中的test命令和语法2中的[]是等价的.语法3中的[[]]双中括号为扩展的test命令. 语法4中的(())常用于计算. 在双中括号[[]]中可以使用通配符

Shell脚本(条件测试&IF判断)——理论篇2

Shell脚本理论篇2--条件测试&IF判断 条件测试 上一篇博客我们提到了预定义变量中有个$?变量用于判断命令是否执行成功.那么如何使用呢? 这时候就需要专门的测试工具--test命令,对特定条件进行测试,并使用$?对返回值进行判断,其命令形式如下: test 条件表达式 & [ 条件表达式 ] //更为常用 注意: 中括号"["和"]"与条件表达式之间均需要使用空格隔开,否则会出现错误!! 一.文件测试 格式: [ 操作符 文件或目录 ] 常用操

Shell脚本的条件测试和if条件语句使用

博文目录一.条件测试操作1.文件测试:2.整数值比较:3.字符串比较:4.逻辑测试:二.使用if条件语句1.单分支if语句2.双分支if语句3.多分支if语句 一.条件测试操作 要使Shell脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的情况以确定执行何种操作.Shell环境根据命令执行后的返回状态值(¥?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常.使用专门的测试工具--test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立

shell脚本的条件测试与比较

条件测试语法: 语法1:test <测试表达式> 这是利用test命令进行条件测试表达式的方法. 语法2:[ <测试表达式> ]:这是通过单括号进行条件测试表达式的方法,和test命令的用法相同,推荐使用的 语法3:[[ <测试表达式> ]]:这是通过[[]]进行条件测试表达式的方法,是比test和[]更新的语法格式 语法4:((<c测试表达式>)):这是通过(())进行条件表达式的方法,一般用于if语句里 针对上面的说明: 语法1和语法2是相同的,语法3是

Shell脚本IF条件判断和判断条件总结

转自:http://m.jb51.net/article/56553.htm 这篇文章主要介绍了Shell脚本IF条件判断和判断条件总结,本文先是给出了IF条件判断的语法,然后给出了常用的判断条件总结,需要的朋友可以参考下 前言:      无论什么编程语言都离不开条件判断.SHELL也不例外. if list then           do something here       elif list then           do another thing here       e

(转)shell脚本之文件测试操作符及整数比较符

shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一下的文件测试操作符. 更多的参数可以help test或者man bash 二.字符串测试操作符: 字符串测试操作符的作用:比较两个字符串是否相同.字符长度是否为0,字符串是否为null(注:bash区分长度字符串和空字符串) "="比较两个字符串是否相同,与"=="等

Shell脚本的条件控制和循环语句

条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误. if 语句通过关系运算符判断表达式的真假来决定执行哪个分支.Shell 有三种 if ... else 语句: if ... fi 语句 if ... else ... fi 语句 if ... elif ... else ... f

Shell学习之条件测试(四)

Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] -- 命令1 操作符 命令2 -- 常用的操作符 ( 注意:-a和-o放在[]里面用,&&和||放在[]外面用 ) -a 或 && 逻辑与 -o 或 || 逻辑或 ! 逻辑否 文件测试 文件测试 格式1: [ 操作符 文件或目录 ] 格式2:test 操作符 文件或目录 常用的测试操作符 -d :测试是否为目录( Directory ) -e

shell学习之条件测试(参考shell脚本编程诀窍)

1关于test测试,查看man文档知 表达式的判断 ( EXPRESSION )                    #EXPRESSION is true ! EXPRESSION                      #EXPRESSION is false EXPRESSION1 -a EXPRESSION2        #both are true,-o means or 字符串是否为空,相等 -n STRING  #the length of STRING is nonzero