shell中的条件判断if和测试

(一)条件判断 if 中-z 到 -d 的意思

  [ -a file ] 若file存在,则为真。

  [ -b file ] 若file存在且是一个特殊文件,则为真。

  [ -c file ] 若file存在且是一个字特殊文件,则为真。

  [ -d file ] 若file存在且是一个目录,则为真。

  [ -e file ] 若file存在,则为真。

  [ -f file ] 若file存在且是一个普通文件,则为真。

  [ -g file ] 若file存在且已经设置了SGID,则为真。

  [ -h file ] 若file存在且是一个符号连接,则为真。

  [ -k file ] 若file存在且已经设置了粘制位,则为真。

  [ -p file ] 若file存在且是一个管道,则为真。

  [ -r file ] 若file存在且是可读的,则为真。

  [ -s file ] 若file存在且大小不为0,则为真。

  [ -t FD ] 若文件描述符FD打开且指向一个终端,则为真。

  [ -u file ] 若file存在且设置了SUID,则为真。

  [ -w file ] 若file存在且是可写的,则为真。

  [ -x file ] 若file存在且是可执行的,则为真。

  [ -O file ] 若file存在且是有效用户ID,则为真。

  [ -G file ] 若file存在且是有效用户组,则为真。

  [ -L file ] 若file存在且是一个符号连接,则为真。

  [ -S file ] 若file存在且是一个套接字,则为真。

(二)条件测试

  使用 “test” 或 “[ ]” 命令:

  if test -f file.c

  then ...

  fi

  或者:

  if [ -f file.c ]

  then ...

  fi

  注意:在使用方括号”[]”来测试条件时,方括号要与测试条件之间留出空格。

  

  测试条件分类:

    字符串比较类\算术比较类\与文件相关的条件测试类

  1.字符串比较类:

  string1 = string2 如果两字符串相同,则结果为真

  string1 != string2 如果两字符串不相同,则结果为真

  -n string 如果字符串不是空,则结果为真

  -z string 如果字符串是空,则结果为真

  注意在比较相等或不等的时侯,=/!=的两边要与比较的两字符串要有空格符相隔开

  2.算术比较类:

expression1 –eq expression2 #如果两个表达式相等,则结果为真
expression1 –ne expression2 #如果两个表达式不等,则结果为真
expression1 –gt expression2 #如果前一个表达式大于后一个表达式,则结果为真
expression1 –ge expression2 #如果前一个表达式大于或等于后一个表达式,则结果为真
expression1 –lt expression2 #如果前一个表达式小于后一个表达式,则结果为真
expression1 –le expression2 #如果前一个表达式小于或等于后一个表达式,则结果为真
! expression #取表达式的非,即表达式为假,则结果为真

  3.文件比较类:

[ FILE1 -nt FILE2 ] 如果 FILE2 比 FILE1 要老, or 如果 FILE1 exists and FILE2 does not则为真。

[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。

[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。

 

  

  

时间: 2024-07-29 15:36:01

shell中的条件判断if和测试的相关文章

Shell中的条件判断语句if~then~fi

Shell中的条件判断语句是前面一篇"Shell中的条件测试语句"的升级篇,也就是说,前面的测试语句是为了现在的判断语句if~then~fi语句服务的. 我们还是按照注意点和代码实现的方式铺开: 1)基本的if-then-fi语句可以用来判断基本的单层的分支结构,其形式如下: 其中if后面的测试语句一般都使用[]命令来做.如下面的例子: #-----------------------------/chapter4/ex4-18.sh------------------ #! /bin

linux基础之shell编程(2)-条件判断,算数运算,测试

bash中如果实现条件判断? 条件测试类型 整数测试 字符测试 文件测试 条件测试的表达式 有三种 [ expression ] --方括号与表达式之间一定要有一个空格 [[ expression ]] test expression 整数测试 -eq: 测试两个整数是否相等 例:$A -eq $B -ne: 测试两个整数是否不等 不等为真,相等为假 -gt: 测试一个数是否大于另一个数:大于,为真:否则,为假: -lt: 测试一个数是否小于另一个数:小于,为真:否则,为假: -ge: 大于或等

linux shell中的条件判断

1. 退出状态 在Linux系统中,每当一条命令执行完成后,系统都会返回一个退出状态,这个状态被存放在$? 这个变量中,是一个整数值,我们可以根据这个值来判断命令运行的结果是否正确. 通常情况下,退出状态值为0,表示执行成功,不为0的时候表示执行失败. POSIX规定的退出状态和退出状态的含义: 0       运行成功 1-255   运行失败,脚本命令.系统命令错误或参数传递错误 126     找到了该命令但无法执行 127     未找到要运行的命令 128     命令被系统强行结束

Bourne Shell中的条件判断

条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) for in do done (3) while do done 第二种主要用于遍历,可能不需要条件判断,其它两种则免不了和 [ 命令共同使用了.下面讲解这个命令如何模拟条件表达式. 文件/目录判断[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 FI

shell中的条件判断

read命令 命令的语法: read [参数] 变量名 常用的参数如下: -t timeout 设定超时时间. -p prompt 设定提示信息,该提示信息将会显在光标前. 条件测试: 条件测试可以判断脚本程序运行的状态.它常用于条件分支,以便在不同的运行状态下执行不同的命令. [ param1 判断符号 param2 ] [ 判断符号 param ] 文件状态测试: -b filename 判断文件filename是否为块设备,若文件不存在返回假. -c filename 判断文件filena

shell编程中的条件判断(shell 05)

shell编程中的条件判断条件if-thencase if-then单条件if commandthen commandsfi当command返回码为0时 条件成立 if.sh #! /bin/bash if date then echo "command exec" fi if date123 then echo "command exec1" fi echo "out if" [[email protected] sh]# ./if.sh 20

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我

24_Shell语言————if条件判断之字符测试

前文中介绍过,bash的条件测试主要有以下3类: 整数测试:比较两个整数谁大谁小,是否相等: 字符测试:比较两个字符串是否相等: 文件测试:测试某个文件是否具有读权限.写权限.执行权限等: 整数测试在前文中介绍过,这里着重讲解字符测试.字符测试采用的比较符号是常用的数学符号: >:大于(在ASCII码表中的先后顺序,从左至右逐字比较) <:小于 ==:等于(注意,= 表示赋值) =~:判断左边的字符串是否能够被右边的模式所匹配,通常用于双中括号中: [[ $opt1=~$opt2 ]] 通常做

26_Shell语言————if条件判断之文件测试、短路操作符

一.文件测试 文件测试大多都是单目测试,其用法相对简单,其格式为: 操作符:文件路径 可以用来测试的选项有: -f:测试其是否为普通文件,即使用ls -l命令查看时,文件类型显示为 - 的文件: -d:测试其是否为目录文件,即使用ls -l命令查看时,文件类型显示为 d的文件: -e:测试文件是否存在,不论是目录还是文件,如果存在则为真,否则为假: -r:测试文件对当前访问者来说(非创建者)是否可读: -w:测试文件对当前访问者来说(非创建者)是否可写: -x:测试文件对当前访问者来说(非创建者