si il varchar va bene, ma ho provato sia con text sia con varchar e l'errore è sempre lo stesso anche scrivendo, come da te suggerito:
str="/usr/bin/mysql --user=user --password=pass -h host -e 'INSERT INTO test (id,perc) VALUES ('abc',0)'"
sul campo numerico visto che gli apici erano superflui non mi dava errore sia che li mettevo sia che non li mettevo, mentre sul campo varchar (o text) mi dà sempre lo stesso errore...