条件表达式取反的正确方式:外部取反还是内部取反?
Bash条件表达式取反的两种写法
两种写法都完全合法,最终效果也完全一致,选哪种全看个人习惯和代码可读性需求:
- 外部取反:就是你示例里的写法
! [[ -z "$k" ]],把整个[[ ... ]]的判断结果取反,逻辑直白,一眼能看出是对整个条件的否定。你给出的代码示例是完全可行的,能正常运行。 - 内部取反:把
!放在[[ ]]里面,写成[[ ! -z "$k" ]]。其实bash里还有更直接的正向测试选项,-n就是专门测试变量非空的,和! -z等价,所以也可以写成[[ -n "$k" ]],这种写法更直观,熟悉bash测试选项的人一眼就能明白是在判断变量非空。
要注意的是,不管用哪种写法,空格都不能省:!和[[之间必须有空格,[[和内部的!之间也得有空格,不然shell会把它们当成一个整体解析,直接报错。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

