Falta do
no seu segundo loop:
for id in ids;
do
for channel in channels; do # <----- here ----
# example filename P209C1T720-T730.csv
lastFile="$dir'P'$id'C'$channel'T1790-T1800.csv'"
# show warning if last file does not exist
if [[ -f $lastFile ]]; then
echo "Last file "$lastFile" is missing"
exit 1
fi
filenameTarget="$targetDir'P'$id'C'$channel'.csv'"
cat $dir'P'$id'C'$channel'T'*'.csv' > $filenameTarget
done;
done
Com base na discussão nos comentários, vejo sua confusão com a sintaxe do loop for
.
Esta é a sintaxe aproximada do for
loop:
for name in list; do commands; done
Sempre deve haver um do
antes dos comandos e um ;
(ou nova linha) seguido por done
após os comandos.
Aqui está uma variação com mais linhas novas:
for name in list
do
commands
done