Bash中if [[ -n "$name" ]]语句里的-n参数作用是什么?
解释Bash中
if [[ -n "$name" ]]里的-n含义 嘿,这个问题我刚摸Bash的时候也卡过,给你掰扯得明明白白的:
在Bash的扩展条件测试结构[[ ... ]]里,-n是一个字符串非空测试运算符,它的核心作用就是判断紧跟的字符串(这里是变量$name的取值)是否处于非空状态。
具体判断规则:
- 如果
$name变量被赋值了非空内容(哪怕是空格、制表符这类不起眼的空白字符),[[ -n "$name" ]]会返回“真”,if条件成立,就会执行then后面的代码块。 - 如果
$name变量没有被定义,或者被赋值了空字符串(比如name=""),这个测试就会返回“假”,if条件不成立,直接跳过对应的代码块。
举两个实际例子直观感受:
当
name="Alice"时:name="Alice" if [[ -n "$name" ]]; then echo "Name has content!" fi这段代码会输出
Name has content!,因为$name有有效取值。当
name=""时:name="" if [[ -n "$name" ]]; then echo "Name has content!" else echo "Name is empty!" fi这段代码会输出
Name is empty!,因为$name是空字符串。
另外补个小知识点:和-n逻辑完全相反的是-z运算符,它用来判断字符串是否为空,你可以对比着记,不容易搞混。
内容的提问来源于stack exchange,提问作者osac
相关产品推荐
相关产品推荐

