$20 is pretty normal.
You may get a few plain coloured (or basic generic print) t-shirts cheaper than that...made in Bangladesh or whatever (some actually aren't all that bad and are 100% cotton).
But normal prices for printed t-shirts can be $20 and up.
Nothing wrong with $20 if it's going to be decent.