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
用!取反就行了,写成这样:
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