- 论坛徽章:
- 28
|
本帖最后由 我是一隻羊 于 2015-04-11 08:10 编辑
回复 23# ywmkelly
我最前面其实就说过了啊,单引号的生效范围是到下一个单引号.不是最后一个...不知道你觉得这句跟最短匹配有什么冲突?
上面的总结,不是说每个都能正确引用,只是通过不同的结果来说明awk究竟是怎样来引用的.都跑一下你应该就能清楚了.
我再细说明下....- n=1
- awk 'BEGIN{print '$n'}'
复制代码 相当于由于1不能被当做变量名,所以这里的1被当做字符,直接打印出来.执行结果为"1"- n=a
- awk 'BEGIN{print '$n'}'
复制代码 相当于注意这里a被当做了变量名.由于并没有在这个awk语句中定义a的值,所以这里的执行结果为"空"
来验证一下我的说法- awk 'BEGIN{a=test;print '$n'}'
复制代码 你a定义的是什么,输出结果就是什么.
那么怎么能引用字符a呢.
首先要构造awk中可以用"来区别字符与变量名.
然后将外部变量以单引号引入.- awk 'BEGIN{print "'$n'"}'
复制代码 注意,像你举得例子.- awk 'BEGIN{print '"$n"'}'
复制代码 这样是不行的,"被放到了'外面.这样就被shell去解释了,而不是awk
最后还是相当于结果依旧为空.
不知楼主还有什么疑惑么?
|
|