没有内置的方法可以做到这一点,不,它永远不会完美,因为这样的情况:
CLASSPATH为环境变量.然后Bash脚本可能包含一个语句CLASSPATH=...但是从不参考
CLASSPATH,如果它的唯一目的是分配CLASSPATH是修改某些使用环境变量的程序的行为(例如java).a和b,以及可变c其值从用户获得的,可以是a或b.然后我可以${!c}用来获取用户指定变量的值; 脚本的给定运行可能永远不会引用b(因为c设置为'a'),但脚本的不同运行可能会有所不同.也就是说,您可能-u对set内置选项感兴趣.如果您的脚本包含以下命令:
set -u
Run Code Online (Sandbox Code Playgroud)
然后从那一点开始,引用尚未设置的变量或参数将是错误的.这有助于检测变量名称中的拼写错误等等.这显然远比那个少gcc -Wall(因为当你引用一个未声明的变量时gcc 总是给出错误消息),但你可能会发现它以同样的方式有益.