O problema é com aspas simples (usadas para envolver todo o conjunto de comandos). A diferença entre aspas simples e aspas duplas é que, entre aspas duplas, as variáveis e os comandos de retrocesso serão substituídos por seus valores, mas, nas aspas simples, a string será tratada como está.
Você pode usar:
bash -c "for i in 1 2; do if [ 146 = 'echo $numbers | cut -f$i -d' ' ' ]; then echo 'NUM is OK '; fi done"