linux shell中的条件判断[]选项解释

通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。

[ -f "somefile" ] :判断是否是一个文件

[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限

[ -n "$var" ] :判断$var变量是否有值

[ "$a" = "$b" ] :判断$a和$b是否相等   

[ -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 存在且是一个命名管道(F如果O)则为真。
[ -r file ]  如果 file 存在且是可读的则为真。 
[ -s file ]  如果 file 存在且大小大于0则为真。 
[ -u file ]  如果 file 存在且设置了SUID (set user ID)则为真。
[ -w file ]  如果 file 如果 file 存在且是可写的则为真。
[ -x file ]  如果 file 存在且是可执行的则为真。 

[ -z string ] 如果 string 的字符串的长度为0则真
[ -n string ] 如果 string 为字符串的长度不为零则为真

[ -t FD ]   如果文件描述符 FD 打开且指向一个终端则为真。
[ -O OPTIONNAME ] 如果 OPTIONNAME 存在且属有效用户ID则为真。
 
[ -G file ] 如果 file 存在且属有效用户组则为真。
[ -L file ] 如果 file 存在且是一个符号连接则为真。 
[ -N file ] 如果 file 存在 and has been mod如果ied since it was last read则为真。 
[ -S file ] 如果 file 存在且是一个套接字则为真。 

[ file1 -nt file2 ] 如果 file1 比 file2 更新则真,或 file1 存在file2不存在则为真。 
[ file1 -ot file2 ] 如果 file1 比 file2 更旧则真,或 file2 存在file1不存在则为真。 
[ file1 -ef file2 ] 如果 file1 和 file2 指向相同的设备和节点号则为真。


[ string1 = string2 ]  如果2个字符串相同则为真。
[ string1 != string2 ] 如果字符串不相等则为真。 
[ string1 < string2 ]  如果 “string1” 按字典排序在 “string2” 之前则为真。 
[ string1 > string2 ]  如果 “string1” 按字典排序在 “string2” 之后则为真。 

在比较时,数字和字符串用不同的比较符号

1.如果a>b且a<c

   if (( a > b )) && (( a < c ))      或者

   if [[ $a > $b ]] && [[ $a < $c ]]

    或者          if [ $a -gt $b -a $a -lt $c ]

2.如果a>b或a<c

              if (( a > b )) || (( a < c ))             

或者       if [[ $a > $b ]] || [[ $a < $c ]]

或者        if [ $a -gt $b -o $a -lt $c ]

3. -o = or , -a = and , 但我一向只用 || 或者 &&

4."||"和"&&"在SHELL里可以用吗?也就是第一个写成if [ a>b && a<c ]也可以吗?

  可用, 但是要两个独立的 [ ] , [[ ]] 或 (( ))      看 1

5 -ne 比较数字 (numberic) ; != 比较字符 (string), 但后者拿来    比较数字也可,只是不是标准用法   

   -lt 是等同 < , 但 < 只能在 shell 的数值操作符 (( )) 或    者 逻缉操作符 [[ ]] 才可使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾稿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值