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

时间:2022-12-20 00:10:55

(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变量的值。