我正在尝试重构一些冗长的shell脚本,并且我想消除在函数内声明但在全局使用的任何变量。有没有办法快速找到这些变量?
或者,有没有办法快速找出哪些变量在使用时是空的?这样我就可以在函数中排版所有变量,并快速查看所有这些全局使用变量的列表(有一些误报,但我可以通过这些变量除外)。
感谢。
答案 0 :(得分:2)
您可能会发现set -u
有帮助。如果在使用时未设置变量,则shell将出错。这不会帮助您找到使用时为空字符串的变量,但会找到未设置的变量。
答案 1 :(得分:1)
我不知道这里有任何真正的快捷方式,但您可以采取一些步骤来更系统地探索您的脚本。
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
希望有所帮助!