Поскольку ваша команда awk
находится внутри одинарных кавычек, переменные оболочки file
и f
расширяться не будут. Вот почему вы получаете awk
ошибки.
Я бы использовал следующий скрипт:
#!/bin/bash
for file in pmb_mpi tau xhpl mpi_tile_io fftw ; do
for f in 2.54 1.60 800 ; do
if [[ ${f} = "2.54" ]] ; then
flist=${file}_${f}_even_v1.xls ${file}_${f}_odd_v1.xls
else
flist=${file}_${f}_v1.xls
fi
cat ${flist} | awk '
s+=$2;
END {print "Average = ",$s/NR}
' >${file}_${f}_avrg.xls
# Or use awk '...' ${flist} >${file}_${f}_avrg.xls
# if you're overly concerned about efficiency of processes.
done
done
Это просто установит flist
для обоих файлов или одного файла, в зависимости от того, является ли f
2.54
или нет, а затем протолкнет этот список файлов с помощью одного awk
сценария.