Chinaunix

标题: bash if then else fi 说明 [打印本页]

作者: icetown    时间: 2011-06-17 17:18
标题: bash if then else fi 说明
if [ condition ]

then

   action

fi

注意:“if”和“[”之间需要空格,如果你不空格,shell会报告语法错误的。

[]与里面的表达式与需要空格分开,否则也会报错。

conditon测试类型对照表

运算符 描述 示例

文件比较运算符

-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 ]

不过有个问题:文件比较运算符中,没有判断文件不存在的参数?
但是用if [ ! filename ]又判断不出来,咋办?

作者: chenyx    时间: 2011-06-17 17:21
你贴出来的文件比较运算符第一个就是
作者: renxiao2003    时间: 2011-06-17 23:36
学习了啊。
作者: icetown    时间: 2011-06-23 14:56
你贴出来的文件比较运算符第一个就是
chenyx 发表于 2011-06-17 17:21



   
我是想判断文件不存在,不是判断文件存在,第一个是判断文件存在的。
作者: chenyx    时间: 2011-06-23 14:59
用!取反就行了,写成这样:
  1. if [ ! -e xyz ]
复制代码

作者: amarant    时间: 2011-06-23 15:02
本帖最后由 amarant 于 2011-06-23 15:04 编辑

if [ ! -f file ]
作者: icetown    时间: 2011-07-07 19:43
Got it.
作者: renxiao2003    时间: 2011-07-07 20:37
楼主比较搞笑,贴出了答案自己没仔细看又说不知道怎么完成。呵呵。
作者: HH106    时间: 2011-07-08 11:43
回复 8# renxiao2003
因为更多的是ctrl+c ,ctrl+v,
作者: renxiao2003    时间: 2011-07-08 12:44
回复 9# HH106


    道理大大的。
作者: jinl    时间: 2011-07-09 01:01
贴了相关知识,但是好像还没理解怎么用




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2