У вашего кода есть ряд проблем, первая из которых - то, что вы описываете.
Он также поместит числа в обратном порядке и запятую в конце, что, вероятно, не то, что вам нужно.
Если это , что вы хотите, просто используйте второе решение.
Решение 1, правильный порядок и отсутствие запятой:
tradeline=""
sep=""
for line in $(cat abc.dat) ; do
tradeline="${tradeline}${sep}\"${line}\""
sep=","
done
echo ${tradeline}
Решение 2, правильный ордер с запятой:
tradeline=""
for line in $(cat abc.dat) ; do
tradeline="${tradeline}\"${line}\","
done
echo ${tradeline}
Решение 3, намного проще, с использованием инструментов, предназначенных для работы:
awk 'BEGIN {sep=""} {printf "%s\"%s\"",sep,$0;sep=","} END {print}' abc.dat
Решение 3 будет моим предпочтительным вариантом, поскольку оно будет быстрее и сможет обрабатывать строки ввода с пробелами в них.