如何检查bash脚本中使用的所有变量?

如何检查bash脚本中使用的所有变量?,bash,variables,Bash,Variables,有没有办法检查bash脚本中声明的所有变量是否正在使用?类似于C++中的Wall? 干杯没有内在的方法可以做到这一点,不,也永远不可能做到完美,因为这样的情况: 假设用户的Bash配置文件将CLASSPATH导出为环境变量。然后一个Bash脚本可能包含如下语句 CLASSPATH=... 从那时起,引用未设置的变量或参数将是一个错误。这有助于检测变量名和诸如此类的输入错误。这显然比gcc-Wall所做的要少得多(因为gcc在引用未声明的变量时总是会给出错误消息),但您可能会发现同样的好处。没有

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


干杯

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

  • 假设用户的Bash配置文件将
    CLASSPATH
    导出为环境变量。然后一个Bash脚本可能包含如下语句 CLASSPATH=...
    从那时起,引用未设置的变量或参数将是一个错误。这有助于检测变量名和诸如此类的输入错误。这显然比
    gcc-Wall
    所做的要少得多(因为
    gcc
    在引用未声明的变量时总是会给出错误消息),但您可能会发现同样的好处。

    没有内置的方法可以做到这一点,也不可能做到完美,因为以下情况:

    • 假设用户的Bash配置文件将
      CLASSPATH
      导出为环境变量。然后一个Bash脚本可能包含如下语句 CLASSPATH=...
      从那时起,引用未设置的变量或参数将是一个错误。这有助于检测变量名和诸如此类的输入错误。这显然比
      gcc-Wall
      所做的要少得多(因为
      gcc
      在引用未声明的变量时总是给出错误消息),但您可能会发现它以同样的方式是有益的。

      这有点棘手,因为您不能静态地执行它。这有点棘手,因为您不能静态地执行它。谢谢,
      set-u
      将非常有用。然而,我正在寻找一些可以检查所有声明的变量是否被使用的东西,而不是所有被使用的变量是否都被声明。也许bash脚本可以做到这一点?@Eddy:是的,我明白你在找什么。正如我所解释的,没有内在的方法可以做到这一点,也永远不可能做到完美。您是否正在寻找一种容易出错的方法来近似此值?谢谢,
      set-u
      将非常有用。然而,我正在寻找一些可以检查所有声明的变量是否被使用的东西,而不是所有被使用的变量是否都被声明。也许bash脚本可以做到这一点?@Eddy:是的,我明白你在找什么。正如我所解释的,没有内在的方法可以做到这一点,也永远不可能做到完美。您是否在寻找一种容易出错的方法来近似此值?