我正在尝试重构一些冗长的 shell 脚本,并且我想消除在函数中声明但全局使用的任何变量。有没有办法快速找到这些变量?
或者,有没有办法快速找出哪些变量在使用时为空?这样我可以排版函数中的所有变量,并快速查看所有全局使用变量的列表(有一些误报,但我可以清除这些)。
谢谢。
你可能会觉得set -u
有帮助。如果使用时未设置变量,shell 将出错。这不会帮助您找到使用时为空字符串的变量,但会找到未设置的变量。
我不知道这里有什么真正的捷径,但是您当然可以采取一些步骤来更系统地探索您的脚本。
export -p
。declare
您的脚本中的关键字。declare -F
和 grep 用于声明语句或变量赋值。set
以排除您知道的变量和函数,然后调查其余部分。恐怕这些都不是全面的解决方案。但是为了让你开始:
# Find declare statements in functions.
for func in $( declare -F | awk '{print $NF}' ); do
type "$func" | fgrep declare
done
希望有帮助!