表达式中的语法错误(错误标记为“i = 2”)

时间:2011-04-18 00:06:44

标签: shell awk

for (( int i="$4"; i<"$5"; i++ ))
do
     awk "NR==i{print}" $1
done

我希望awk打印4美元到5美元之间的记录(这是一个范围,即4-9)

无法弄清楚为什么我会收到此错误?

Syntax error in expression ( error token is "i=2" )

3 个答案:

答案 0 :(得分:2)

这不是C.您不需要声明计数器的类型。

答案 1 :(得分:1)

awk对shell变量i一无所知,首先,为什么不使用:

awk "(NR >= $4) && (NR <= $5) {print}" $1

shell本身应该扩展$变量,因为它们在双引号内而不是单引号(当然这取决于shell,但涵盖了最流行的,主要是bash)。 / p>

您可以在以下成绩单中看到这一点:

====
pax$ cat infile
..1
..2
..3
..4
..5
..6
..7
..8
..9

====
pax$ cat qq.sh
#!/usr/bin/bash

awk "(NR >= $4) && (NR <= $5) {print}" $1

====
pax$ ./qq.sh infile junk junk 2 5
..2
..3
..4
..5

====
pax$ _

答案 2 :(得分:0)

这里有正确的语法:

for ((  i = $2 ;  i <= $3;  i++  ))
do
   awk "NR==$i{print}" $1
done