首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达式语法错误( error token为"i=2“)

表达式语法错误( error token为"i=2“)
EN

Stack Overflow用户
提问于 2011-04-18 08:06:44
回答 3查看 4K关注 0票数 0
代码语言:javascript
复制
for (( int i="$4"; i<"$5"; i++ ))
do
     awk "NR==i{print}" $1
done

我希望awk打印出$4和$5之间的记录(这将是一个范围,即4-9 )

找不到为什么我会得到这个错误?

代码语言:javascript
复制
Syntax error in expression ( error token is "i=2" )
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-18 08:16:20

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

代码语言:javascript
复制
awk "(NR >= $4) && (NR <= $5) {print}" $1

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

你可以在下面的文字记录中看到这一点:

代码语言:javascript
复制
====
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$ _
票数 1
EN

Stack Overflow用户

发布于 2011-04-18 08:14:47

这不是C,你不需要声明计数器的类型。

票数 2
EN

Stack Overflow用户

发布于 2011-04-18 08:24:28

下面是正确的语法:

代码语言:javascript
复制
for ((  i = $2 ;  i <= $3;  i++  ))
do
   awk "NR==$i{print}" $1
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5697348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档