如何检查bash脚本中是否正在使用所有变量?

时间:2012-03-27 16:41:43

标签: bash variables

是否有办法检查是否正在使用bash脚本中声明的所有变量?类似于C ++中的-Wall?

干杯

1 个答案:

答案 0 :(得分:6)

没有内置的方法可以做到这一点,不,由于以下情况,它永远无法完美地完成:

  • 假设用户的Bash配置文件导出CLASSPATH作为环境变量。然后,Bash脚本可能包含
    CLASSPATH=...
    之类的语句,但从不引用CLASSPATH,如果它分配给CLASSPATH的唯一目的是修改某些使用环境变量的程序的行为(例如java)。
  • 假设我创建变量ab,以及变量c,其值来自用户,可以是ab 。然后我可以使用${!c}来获取用户指定变量的值;脚本的给定运行可能永远不会引用b(因为c设置为'a'),但脚本的不同运行可能会有所不同。

也就是说,您可能对-u内置的set选项感兴趣。如果您的脚本包含以下命令:

set -u

然后从那时起,引用尚未设置的变量或参数将是错误的。这有助于检测变量名称中的拼写错误等等。这显然远远小于gcc -Wall所做的事情(因为gcc 总是在您引用未声明的变量时给出错误消息),但您可能会发现它在同样的方式。