请注意:关于如何在此站点上测试单个shell变量有很多问题.这个问题是关于测试任何未定义变量的脚本.
您可以在bash中使用未定义的变量,而不会在执行时看到任何错误:
#!/bin/bash
echo ${UNDEF_FILE}
ls -l ${UNDEF_FILE}
exit 0
Run Code Online (Sandbox Code Playgroud)
我发现这很容易出错.如果我想在大脚本中更改变量的名称,或者删除该变量,则所有先前过时的引用都将导致脚本中的错误.有时这对于调试来说并不明显,或者你发现它为时已晚.
为什么允许这样做?有没有办法标记未定义的变量?
anu*_*ava 15
您可以使用:
set -u
Run Code Online (Sandbox Code Playgroud)
在脚本开始时使用未定义的变量时抛出错误.
-u
执行参数扩展时,将特殊参数"@"和"*"以外的未设置变量和参数视为错误.如果尝试对未设置的变量或参数进行扩展,则shell会输出错误消息,如果不是交互式,则会以非零状态退出.