2013-04-27 39 views
1

我想制作一个简单的脚本,我需要在变量中保留一个字段。这是我有:将一行字段保存到一个变量中

BEGIN{ 
    FS=":"; 
} 

{ 
    print; 
    item=$1; 
    print " "$1; 
    print " "$2; 
    print " item:<"$item">"; 
} 

我不明白的是,当我通过脚本一条线,这是输出:

main.o: src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h \ //given line 
    main.o              //field 1 
    src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h \ //field 2 
    item:<main.o: src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h \> //field1?! 

为什么这不行,为什么是整行保存到item

回答

1

此:

print " item:<"$item">"; 

应该是:

print " item:<"item">"; 

awk中可以看很多像C;变量名称前没有$。在awk中,$表示一个字段,所以$ item试图使用item的值作为记录的索引。在我实现awk(Mac OS)时,你写的脚本失败很快;我猜你的awk实现更加宽容(但在这种情况下不是以有用的方式)。

+0

哦。我懂了。我只用了一下awk,所以我认为它可以像bash一样使用变量。我正在运行Kubuntu,它没有告诉我任何警告或错误。谢谢 – 2013-04-27 10:27:42

相关问题