Вы можете сделать это с помощью следующего скрипта:
#!/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
Этот скрипт использует вставку для создания новой последовательности аргументов, чередующихся между двумя файлами, а затем очень простой конечный автомат для сбора и обработки пар.
Имейте в виду, что это не сработает, если ваши строки содержат пробелы, но я предполагаю, что это не проблема, поскольку ваш оригинальный скрипт тоже не сработал.