AWK无法打印变量值问题求助
AWK变量在BEGIN块中为空的解决方法
问题出在你传递变量的方式上,AWK对命令行参数的处理规则导致BEGIN块执行时还没拿到var的值。
问题原因
你用awk -f fail.awk var="value" /dev/null调用时,var="value"被放在了脚本文件之后、待处理文件/dev/null之前,AWK会把这种位置的var=val当作文件名参数而非变量赋值,而BEGIN块是在处理任何文件之前执行的,此时var还未被赋值,所以输出为空。
两种解决办法
使用
-v选项显式定义变量(推荐)-v选项会让变量在BEGIN块执行前就完成初始化,命令改为:awk -v var="value" -f fail.awk /dev/null将变量赋值放在脚本文件之前
把var="value"移到-f fail.awk前面,AWK会识别为变量赋值:awk var="value" -f fail.awk /dev/null
修改后的输出
执行上述任一命令后,输出会变为:
>>> value >>> <patternprefix> value <patternsuffix>
内容的提问来源于stack exchange,提问作者Dennis Heimbigner
相关产品推荐
相关产品推荐

