Shell脚本中[] 和 [[]] 的区别

shell脚本中[] [[]]总是太模糊,在这里记录一下,不断完善

-z and -n

-z用于判断变量为空,如果为空返回0,判断为true,如果非空返回1,判断为false,

-n用于判断变量不为空,如果不为空返回0,判断为true,如果为0返回1,判断为false

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

pid="123"

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

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

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

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

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

[[ ]] 双对中括号内,是不能使用 -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 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]] -a 和 -o就不成立了,是因为,[[]] 双对中括号,不能使用 -o和 -a的参数,直接报错。

[ ] 可以使用 -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] 成立

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

 

posted on   sudochen  阅读(1009)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示