我有这个脚本
for i in `cat file`
do
echo $i
done
如何在2个不同文件中使用相同的循环2变量
获取
echo $i + $f
答案 0 :(得分:3)
使用经典shell(而不是Bash特定)构造的简单解决方案使用:
paste file1 file2 |
while read i j
do echo $i and $j
done
这假设来自file1的数据中没有空格(无论如何都要处理file2中的空格,因为j
获取每行输入的第二个和后续的单词)。如果你需要担心,那么你可以修补IFS等:
paste -d'|' file1 file2 |
while IFS='|' read i j
do echo $i and $j
done
答案 1 :(得分:2)
您可以使用以下脚本执行此操作:
#!/usr/bin/bash
state=0
for i in $(paste file1 file2) ; do
if [[ $state -eq 0 ]] ; then
state=1
save=$i
else
state=0
echo $save and $i
fi
done
使用两个输入文件:
$ cat file1
1
2
3
4
5
和
$ cat file2
a
b
c
d
e
你得到以下输出:
1 and a
2 and b
3 and c
4 and d
5 and e
这个脚本使用paste基本上在两个文件之间交替创建一个新的参数序列,然后是一个非常简单的状态机来拾取和处理这些对。
请记住,如果你的行包含空格,它将无效,但我认为这不是问题,因为你的原始剧本也没有。
答案 2 :(得分:1)
while IFS='|' read -r i j; do echo $i and $j; done < <(paste -d '|' file1 file2)
通过选择未出现在数据中的分隔符,即使数据包含空格(例如),这也将起作用。