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

Edd*_*ddy 1 variables bash

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

干杯

rua*_*akh 6

没有内置的方法可以做到这一点,不,它永远不会完美,因为这样的情况:

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

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

set -u
Run Code Online (Sandbox Code Playgroud)

然后从那一点开始,引用尚未设置的变量或参数将是错误的.这有助于检测变量名称中的拼写错误等等.这显然远比那个少gcc -Wall(因为当你引用一个未声明的变量时gcc 总是给出错误消息),但你可能会发现它以同样的方式有益.