如何通过命令行让tpage 2.7遇未定义变量时抛出错误?
关于tpage 2.7(Template Toolkit 2.27)未定义变量检测及空字符串变量的解决方案
Q1:能否通过命令行启用未定义变量异常?
可以实现,但不能直接使用--debug=DEBUG_UNDEF,因为tpage的--debug参数接受的是去掉DEBUG_前缀的小写标志名,或者对应的调试掩码数值:
标志名方式:直接使用
undef作为--debug的参数,对应文档中的DEBUG_UNDEF常量,启用后模板遇到未定义变量时会抛出错误:tpage --debug=undef --define var=value your_template.tt数值掩码方式:
DEBUG_UNDEF对应的数值是16,也可以直接传递掩码值:tpage --debug=16 --define var=value your_template.tt
如果上述方式不生效,还可以通过--define直接设置Template Toolkit的配置参数:
tpage --define DEBUG_UNDEF=1 --define var=value your_template.tt
Q2:希望像--define myName=""这样的空字符串不被视为未定义
只要正确处理shell的引号解析,通过--define传递的空字符串变量会被视为已定义(值为空字符串),不会触发未定义错误,注意以下写法:
- 在bash/zsh等shell中,直接写
--define myName=""会被解析为--define myName=,tpage会将myName设置为空字符串,属于已定义变量,不会触发报错。 - 为避免shell解析问题,更稳妥的写法是用单引号包裹:
tpage --debug=undef --define 'myName=""' your_template.tt # 或者直接传递空值 tpage --debug=undef --define myName='' your_template.tt
启用DEBUG_UNDEF后,只有完全未定义的变量才会报错,空字符串变量不会触发异常。
内容的提问来源于stack exchange,提问作者Nazar
相关产品推荐
相关产品推荐

