- 论坛徽章:
- 0
|
原帖由 ruifox 于 2006-1-20 18:23 发表 ![]()
非常感谢6楼的指出了我的错误!
不过我对单引号和双引号的用法仍然有点糊涂:
如果说单引号不做处理,为什么用单引号括住的系统变量会取到值abcd,而不是$Flag,我觉得你说的不做处理应该是指最外面的一层单 ...
对19条的描述可用6楼的,6楼对第1例解释确不对.
awk '{print '$Flag'}'
这个例子用法有问题,引号要配对使用,外层用了单引号,内层再用就必须用\转义,应该更正为:
awk '{print \'$Flag\'}'
或
awk '{print "$Flag"}'
结果是shell不解释$Flag,直接传给awk将$Flag当字符串输出
楼主的例子在你的环境中输出abcd,我认为是shell将前两个单引号内容取出,加上环境变量值abcd,再加上后两个引号之间的内容,3个串连起来后传给awk.刚好第2第3个引号之间没空格,所以没报错. 换了别的shell或别的操作系统,结果可能不同或报错.
19、在awk中如需调用环境变量一定不能出现在单引号内:
Flag=abcd
awk '{print '$Flag'}' 用法不对,引号不配对,结果依赖环境
awk '{print "$Flag"}' 结果为$Flag
awk "{print '$Flag'}" 结果为$Flag
awk "{print \"$Flag\"}" 结果为abcd |
|