面试题答案
一键面试局部变量定义方式及作用域
- 定义方式:在函数内部使用
local
关键字定义,例如local var_name=value
。 - 作用域范围:仅在定义它的函数内部有效,函数执行结束后,局部变量即被销毁。
全局变量定义方式及作用域
- 定义方式:在脚本的主体部分,直接赋值定义,如
var_name=value
,无需特殊关键字。 - 作用域范围:从定义处开始,到脚本结束,在整个脚本文件内都有效,同时在脚本中调用的函数内也可访问和修改(除非函数内有同名局部变量遮蔽它)。
变量操作安全审计注意事项
- 变量初始化:确保所有变量在使用前都进行了初始化,避免使用未初始化变量导致的不可预测行为。例如,如果脚本依赖某个变量来进行文件操作,但该变量未初始化,可能会导致操作错误的文件。
- 变量命名规范:使用有意义且规范的命名,避免与系统环境变量冲突。例如,不要将自定义变量命名为
PATH
等系统常用环境变量名,以免影响系统正常功能。 - 防止命令注入:在使用变量值执行命令时,要特别小心,避免恶意用户通过变量值注入恶意命令。例如,
command $var
这样的用法,如果$var
的值被恶意修改为; rm -rf /
,可能会导致严重后果。可以使用command "$var"
或使用eval
时进行严格的输入验证。 - 权限相关变量:对于涉及权限操作的变量,如文件权限相关变量,要严格检查其取值范围。例如,在设置文件权限时,确保权限值在合理的范围内,避免设置过度开放的权限,如
chmod $perm file
,要验证$perm
是否为合法的权限值。 - 环境变量安全:谨慎使用外部环境变量,避免在脚本中直接信任外部环境变量的值,以防被篡改。例如,如果脚本依赖于用户自定义的环境变量来执行某些敏感操作,应先对其进行验证。