type
status
date
slug
summary
tags
category
icon
password
shell脚本中使用awk时,常会遇到引用awk命令外部的shell脚本变量的情况,此时弱直接以
$var
的方式引用常会出错。其主要原因是
$var
不符合awk语法,awk未能正确识别该外部变量的引用。一般处理方法是:在awk命令内的shell变量外添加一层单引号和双引号,单引号在内双引号在外。
如:
看上去是双引号套单引号,其实真正的原因为:
这是shell的功能,shell对单引号和双引号,按从左到右的顺序成对匹配。awk命令用单引号引起来,可以防止shell对其中内容进行解释。
而
awk '{print " '$str' "}' file
在shell中实际上被解释为两部分:awk '{print " '
和'"}'
即awk对2个单引号内的命令起作用。
至于
$str
则被shell正常解释为变量str的值。所以,如果str=hello,则经解释后成为,
awk {print "hello"} file