我正在处理大量 bash 脚本,并且需要消除不再有意义的变量的使用。
用于表示路径的变量,我们当前将其设置为
/var/empty
。有没有一种方法可以以这样的方式声明它,即任何对它的引用都会导致 bash 打印警告,但not会因错误而失败?有点像现代 C/C++ 编译器的 __attribute__ ((deprecated))
功能。
(我们的许多脚本已经以
set -eu
开头。)
由于您已经使
set -u
对许多脚本生效,我将按如下方式进行:假设您的过时变量的名称是 obs
。然后我会用定义这个变量
typeset -rn obs=foobarbaz
如果有人尝试将此变量设置为新值,则 -r 会生成错误消息(只读变量)。
如果
set -u
有效,则对该变量的引用也会产生错误消息 (未绑定变量)。
如果没有错误,则必须在这些脚本中搜索对变量的引用,这些脚本没有
set -u
。