shell中测试命变量是否已经定义

(1)sehll实例

# cat subshell 
    #!/bin/bash  
      
    if (set -u; : $var); then  #冒号与$间有空格  
    echo "Variable is set."  
    else
    echo "Not set"
    fi  

(2)输出结果:

# ./subshell 
./subshell: line 3: var: unbound variable
Not set

(3)原因分析:

其中set -u命令用于设置shell选项,u是nounset表示当使用未定义的变量时,输出错误信息并强制退出。: $var中冒号是不做任何事只是参数展开,若没有冒号则$var被解释成shell命令,shell试图去执行var变量的值。加上冒号,shell试图 将var变量进行参数展开但不会试图去执行var变量的值。

原文地址:https://www.cnblogs.com/Berryxiong/p/6242108.html