A szóközre szükség volna. Úgy mint a %03d-re. A számozás ellenkező esetben 1 2 3 11 12 13 stb. S így összeomlik a kiiratás, Magyarul, nem igazítja megfelelően a blokkokat. Bár lehet hogy van ésszerűbb vagy jobb megoldás. A column-ot még nem ismerem.
columns="4"
position="20"
IFS=$';'
loadData () {
count="1"
for sor in $(cat ${channel_list}); do
numbers[ ${count} ]=$(echo ${sor} | awk '{printf $1}')
ch_name[ ${count} ]=$(echo ${sor} | awk '{printf $2}')
((count="${count}+1"))
done
}
printMenu () {
count="1"
for channel in ${numbers[*]}; do
if [ $(echo \($count-1\) % ${columns} | bc) -eq 0 ]; then
echo
fi
name="${ch_name[${count}]}"
printf "${Yellow} ${channel} ${NC}${name}"
((POS="${position}-${#name}"))
printf "${White} \033[${POS}C"
((count="${count}"+1))
done
}
loadData
printMenu
unset IFS