shell基础--- [] [[]] -n -z 的含义解析

shell脚本[] [[]] -n -z 的含义解析

1、在中括号中,判断变量的值, 加不加双引号的问题?

-z 判断 变量的值,是否为空; zero = 0

- 变量的值,为空,返回0,为true

- 变量的值,非空,返回1,为false

-n 判断变量的值,是否为空 name = 名字

- 变量的值,为空,返回1,为false

- 变量的值,非空,返回0,为true

pid="123"

[ -z "$pid" ] 单对中括号变量必须要加双引号

[[ -z $pid ]] 双对括号,变量不用加双引号

 

[ -n "$pid" ] 单对中括号,变量必须要加双引号

[[ -z $pid ]] 双对中括号,变量不用加双引号

 

2、多个条件判断,[] 和 [[]] 的区别?

2.1:[[ ]] 双对中括号,是不能使用 -a 或者 -o的参数进行比较的;

&& 并且 || 或 -a 并且 -o 或者

[[ ]] 条件判断 && 并且 || 或

 

[[ 5 -lt 3 || 3 -gt 6 ]] 一个条件,满足,就成立 或者的关系

[[ 5 -lt 3 || 3 -gt 6 ]] 一个条件满足,就成立 或者的关系

 

[[ 5 -lt 3 ]] || [[3 -gt 6 ]]

[[ 5 -lt 3 ]] || [[3 -gt 6 ]] 写在外面也可以

 

 

&& 必须两个条件同时满足,和上述一样,这里想说明的问题的是:

 

[[ 5 -lt 3]] -o [[ 3 -gt 6 ]] [[ 5 -lt 3 -o 3 -gt 6 ]]

[[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]]

-a 和 -o就不成立了,是因为,[[]] 双对中括号,不能使用 -o和 -a的参数

直接报错:

2.2 [ ] 可以使用 -a -o的参数,但是必须在 [ ] 中括号内,判断条件,例如:

[ 5 -lt 3 -o 3 -gt 2 ] 或者条件成立

[5 -lt 3 ] -o [ 3 -gt 2] 或者条件, 这个不成立,因为必须在中括号内判断

 

如果想在中括号外判断两个条件,必须用&& 和 || 比较

[5 -lt 3 ] || [ 3 -gt 2]

[5 -gt 3 ] && [ 3 -gt 2] 成立

 

相对的,|| 和 && 不能在中括号内使用,只能在中括号外使用

3、当判断某个变量的值是否满足正则表达式的时候,必须使用[[ ]] 双对中括号

单对中括号,直接报错:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell 脚本中,常见的运算符主要包括算术运算符、关系运算符、布尔运算符和字符串运算符等。 1. 算术运算符: | 运算符 | 描述 | 示例 | | ------ | ---------- | ---------------| | + | 加法 | `expr $a + $b` | | - | 减法 | `expr $a - $b` | | * | 乘法 | `expr $a \* $b` | | / | 除法 | `expr $a / $b` | | % | 取余 | `expr $a % $b` | 注意:算术运算符两边必须有空格,否则会出现语法错误。 2. 关系运算符: | 运算符 | 描述 | 示例 | | ------ | ----------------------| ---------------| | -eq | 判断两个数是否相等 | `if [ $a -eq $b ]` | | -ne | 判断两个数是否不相等 | `if [ $a -ne $b ]` | | -gt | 判断左侧数是否大于右侧 | `if [ $a -gt $b ]` | | -lt | 判断左侧数是否小于右侧 | `if [ $a -lt $b ]` | | -ge | 判断左侧数是否大于或等于右侧 | `if [ $a -ge $b ]` | | -le | 判断左侧数是否小于或等于右侧 | `if [ $a -le $b ]` | 3. 布尔运算符: | 运算符 | 描述 | 示例 | | ------ | --------------------------------------| ------------------| | ! | 非运算,表达式为 true 则返回 false,反之亦然 | `if [ ! false ]` | | -o | 或运算,有一个表达式为 true 则返回 true | `if [ $a -lt 20 -o $b -gt 100 ]` | | -a | 与运算,两个表达式都为 true 才返回 true | `if [ $a -lt 20 -a $b -gt 100 ]` | 4. 字符串运算符: | 运算符 | 描述 | 示例 | | ------ | ------------------------------------| ------------------------| | = | 判断两个字符串是否相等 | `if [ $a = $b ]` | | != | 判断两个字符串是否不相等 | `if [ $a != $b ]` | | -z | 判断字符串是否为空字符串 | `if [ -z $a ]` | | -n | 判断字符串是否为非空字符串 | `if [ -n $a ]` | | str | 判断字符串是否为非空字符串 | `if [ $a ]` | 注意:字符串运算符两边不需要空格,但是 `=` 和 `!=` 两个运算符需要被引号包含起来。 以上是 Shell 常见的运算符,可以根据需要在脚本中灵活使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值