IFS
по умолчанию разделяет символ пробела, поэтому ваш цикл for
фактически зацикливается на каждом «слове»
$ for x in `echo a 19 b whatever`; do echo $x; done
a
19
b
whatever
$
. Лучшим подходом может быть устранение как цикла for
, так и бесполезного использование cat
через что-то вроде
$ cat input
A 19
B 81
C 76
D 31
$ awk '{system("echo "$2" "$1)}' input
19 A
81 B
76 C
31 D
$
, где echo
вместо вашей "моей команды"...