You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

条件表达式取反的正确方式:外部取反还是内部取反?

Bash条件表达式取反的两种写法

两种写法都完全合法,最终效果也完全一致,选哪种全看个人习惯和代码可读性需求:

  • 外部取反:就是你示例里的写法 ! [[ -z "$k" ]],把整个[[ ... ]]的判断结果取反,逻辑直白,一眼能看出是对整个条件的否定。你给出的代码示例是完全可行的,能正常运行。
  • 内部取反:把!放在[[ ]]里面,写成[[ ! -z "$k" ]]。其实bash里还有更直接的正向测试选项,-n就是专门测试变量非空的,和! -z等价,所以也可以写成[[ -n "$k" ]],这种写法更直观,熟悉bash测试选项的人一眼就能明白是在判断变量非空。

要注意的是,不管用哪种写法,空格都不能省:!和[[之间必须有空格,[[和内部的!之间也得有空格,不然shell会把它们当成一个整体解析,直接报错。

内容的提问来源于stack exchange,提问作者Dilna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:02:01