分享

linux [] 使用或中括号使用

redhat1986 发表于 2015-7-6 09:09:12 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 10832
格式
“#”代表空格,不可缺少
  • [# param1#op# param2 #]
这种带比较操作符的形式,op左右必须使用空格隔开.
如 [# “3”==”2” #]  这种缺少空格的写法会得到结果“true”,当然实际应为”false”.

  • 变量的引用应使用双引号括起来 [# -z “$name” #].
*********************
name="Jim"
[ $name == "Jack" ]   #将会变成 [ Jim == "Jack" ], 也就出现错误了.
*********************
  • 常量应该使用双引号或单引号括起来 [# ‘1’#==#’10’ #].
  • 更好的书写方式:
****************************
a. 中括号内的每一个组件都用空格隔开(可谓釜底抽薪)
b. 变量都以双引号括起来
****************************
参数
-b file                若文件存在且是一个块特殊文件,则为真
-c file                若文件存在且是一个字符特殊文件,则为真
-d file                若文件存在且是一个目录,则为真
-e file                若文件存在,则为真
-f file                若文件存在且是一个规则文件,则为真
-g file                若文件存在且设置了SGID位的值,则为真
-h file                若文件存在且为一个符合链接,则为真
-k file                若文件存在且设置了"sticky"位的值
-p file                若文件存在且为一已命名管道,则为真
-r file                若文件存在且可读,则为真
-s file                若文件存在且其大小大于零,则为真
-u file                若文件存在且设置了SUID位,则为真
-w file                若文件存在且可写,则为真
-x file                若文件存在且可执行,则为真
-o file                若文件存在且被有效用户ID所拥有,则为真
-z string              若string长度为0,则为真
-n string              若string长度不为0,则为真
string1 = string2      若两个字符串相等,则为真
string1 != string2     若两个字符串不相等,则为真
**********************************************************
参与比较的数字必须能够转化为整数,话说那里有这个语法的manual?
int1 -eq int2          若int1等于int2,则为真
int1 -ne int2          若int1不等于int2,则为真
int1 -lt int2          若int1小于int2,则为真
int1 -le int2          若int1小于等于int2,则为真
int1 -gt int2          若int1大于int2,则为真
int1 -ge int2          若int1大于等于int2,则为真
**********************************************************
! expr                  若expr为假则复合表达式为真。expr可以是任何有效的测试表达式
expr1 -a expr2         若expr1和expr2都为真则整式为真
expr1 -o expr2         若expr1和expr2有一个为真则整式为真

已有(4)人评论

跳转到指定楼层
cochou 发表于 2015-7-6 09:20:21
学习了,  mark
回复

使用道具 举报

fdfdggg 发表于 2015-7-6 13:45:21
学习了,  mark
回复

使用道具 举报

深海渔民 发表于 2015-7-7 22:10:00
不懂,学习一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条