在bash中迭代两个项目

时间:2014-08-01 12:43:31

标签: bash loops

给定一个文件integers,其中包含由新行分隔的整数。例如:

1
39
77
109
137
169
197
229
261
293

可以使用以下代码迭代文件:

while read a
do
    echo "$a"
done < integers

我正在寻找一个优雅的解决方案,以便循环同时采用两个整数并始终更新一步,这样:

while #some funny commands
do
    echo "$a | $b"
done < integers

结果:

1 | 39
39 | 77
77 | 109
109 | 137
137 | 169
169 | 197
197 | 229
229 | 261
261 | 293

2 个答案:

答案 0 :(得分:4)

{
    read a
    while read b; do
        echo "$a | $b"
        a=$b
    done
} < file

输出:

1 | 39
39 | 77
77 | 109
109 | 137
137 | 169
169 | 197
197 | 229
229 | 261
261 | 293

答案 1 :(得分:4)

使用变量存储先前的值:

prev= 
while read line; do
   [[ ! -z $prev ]] && echo $prev "|" $line; 
   prev=$line; 
done <file