how about:
jpegtran -copy none -optimize -outfile image.jpg image.jpg
I'm not a shell expert by any means, but I think that with your original command, as soon as it is executed, the redirect is set up which overwrites your image.jpg. Then when jpegtran tries to read it in it finds an empty file.