shell判断使用的括号区别

奋斗吧
奋斗吧
擅长邻域:未填写

标签: shell判断使用的括号区别 博客 51CTO博客

2023-06-19 18:24:24 206浏览

shell判断使用的括号区别,1,双小括号不能用关键字运算符比较,比如以下-gt,-ge,-lt,-le,-eq,-ne,只能使用符号比较,比如==>=>等等。#!/bin/bashif(("$1"-gt"0"))thenecho"ok"elseecho"not"fi看下运行结果我们使用符号比较#!/bin/bashif(("$1">"0"))then

1,双小括号不能用关键字运算符比较,比如以下

-gt,-ge,-lt,-le,-eq,-ne,只能使用符号比较,比如== >= >等等。

#!/bin/bash
if (( "$1" -gt "0" ))
 then
  echo "ok"
else
  echo "not"
fi

看下运行结果shell判断使用的括号区别_bash

我们使用符号比较

#!/bin/bash
if (( "$1" > "0" ))
 then
  echo "ok"
else
  echo "not"
fi

看下运行结果shell判断使用的括号区别_bash_02

我们再来看个代码

#!/bin/bash
if (( "$1" == "ss" ))
 then
  echo "ok"
else
  echo "not"
fi

看下运行结果shell判断使用的括号区别_字符串比较_03

结果明显是不准确也是不对的

再来看个代码

#!/bin/bash
if (( "$1" >= "ss" ))
 then
  echo "ok"
else
  echo "not"
fi

再来看下结果shell判断使用的括号区别_bash_04

也是不准确和不对的

由此可见,双圆括号,适用于数字比较判断,并不适用于字符串比较判断,会判断失误

2,单中括号和双中括号基本类似,推荐使用双中括号,单中括号会有问题

看代码

#!/bin/bash
if [ "$1" >= "ss" ]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串_05

单中括号不支持>= 因为这是个bash的特性决定的

我们看下双中括号

#!/bin/bash
if [[ "$1" >= "ss" ]]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串_06

一样不支持

看代码

#!/bin/bash
if [ "$1" == "ss" ]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串_07

结果准确

看代码,双

#!/bin/bash
if [[ "$1" == "ss" ]]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_bash_08

结果准确

我们使用数字来测试下

#!/bin/bash
if [ "$1" == "0" ]
 then
  echo "ok"
else
  echo "not"
fi

看代码shell判断使用的括号区别_bash_09

准确识别

双括号代码

#!/bin/bash
if [[ "$1" == "0" ]]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_bash_10

准确识别

我们使用关键字判断符号来测试,就是-eq ,-ne这些

#!/bin/bash
if [ "$1" -eq "0" ]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串比较_11

会抛出异常

看下双括号

#!/bin/bash
if [[ "$1" -eq "0" ]]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_bash_12

判断严重错误

看下 -ne

#!/bin/bash
if [ "$1" -ne "0" ]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串_13

有错误抛出

看下双中括号

#!/bin/bash
if [[ "$1" -ne "0" ]]
 then
  echo "ok"
else
  echo "not"
fi

看下结果shell判断使用的括号区别_bash_14

结果不准确

看下-gt

#!/bin/bash
if [ "$1" -gt "0" ]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_bash_15

一样会抛异常

看双括号

#!/bin/bash
if [[ "$1" -gt "0" ]]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_bash_16

由此可见,在单双中括号情况下,字符串使用-eq和-ne 关键字运算符比较时候,字符串永远是等于0的,这点需要注意,所以比较纯数字大小时候,推荐使用双圆括号,不推荐使用双中括号,会出现比较失误,或者我们使用 == 和!=也可以。

#!/bin/bash
if (( "$1" == "ss" ))
 then
  echo "ok"
else
  echo "not"
fi

看结果

shell判断使用的括号区别_字符串_17

严重错误,双圆括号不适用于字符串比较

使用单中括号

#!/bin/bash
if [ "$1" == "ss" ]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串_18

精准识别

看双中括号

#!/bin/bash
if [[ "$1" == "ss" ]]
 then
  echo "ok"
else
  echo "not"
fi

看结果shell判断使用的括号区别_字符串_19

精准识别

好习惯就是,字符串比较使用单或者双中括号,双中括号可以使用正则,不使用关键字-eq -ne 等来比较字符串,并且字符串都只可以用=或者==,!=来判断,没有>=或者<=这一说。

数字比较使用双圆括号,或者使用中括号时候使用双中和单中时候,使用关键子来比较就是-eq -ne这些,避免使用= !=这些来比较

双圆括号和单中括号都可以用来做运算shell判断使用的括号区别_字符串_20

两者是等价的

变量一定要用双引号引起来,防止出错

字符串比较用单或双中括号,并且用=或者==或者!=,不支持-eq这类关键字

数字比较支持双圆括号,在使用双圆括号情况下支持,==,!=,>=,<=,>,<,不支持=

数字使用单或者双中括号情况下支持==,=,!=,-eq,-ne,-gt, -ge, -lt, -le不支持>=和<=,双中括号还支持>和<,单中括号不支持,但是无论单双中括号不要用>和<来比较虽然不会报错,但是比较结果不准确

使用单或双中括号来比较数字时候尽量不使用,-eq,-ne,-gt等这些关键词,因为如果比较结果是字符串的话,shell会报错

单中括号的报错shell判断使用的括号区别_字符串_21

双中括号的报错shell判断使用的括号区别_bash_22

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695