I've noticed that the return from any cURL request in ZSH ends in a %
, for example:
$ curl http://textbelt.com/text -d number="555555555" -d message="hey"
=> { "success": true }%
Why is this character being added and is there a standard method for removing it?
note: ZSH is the only shell that I notice this occurring (tested in bash csh ksh sh tcsh zsh)
Try explicitly adding a newline \n to the message.
This is a zsh feature that prints a percent-and-newline after a command completes if that command does not already include a newline at the end of its output. If zsh did not do this, you would either not ever notice the fact that the command didn't print a newline - or you'd see zsh's command prompt not start on the margin and think it was a bug in zsh.
Tools like curl religiously print whatever results they get from the source and should never spontaneously print a newline without being asked to. I see this behaviour most often with curl. If you are coding a tool that uses curl, you do of course have the option of adding in a newline yourself.
I suggest not adding a newline unless you really have to. In the case where you really want to add a newline, you can use a separate tool (echo for example) - but the easiest with curl is the "write-out" option:
From curl's man page: