Bugs: - `echo "$my_variable" | my_command` can [behave unexpectedly][1] if the variable starts with one of the `echo` options. You can do `my_command <<< "$my_variable"` instead. - `unset $IFS` does *not* unset `IFS`. For that you need `unset IFS`. Simplifications: - You shouldn't need to set `IFS` - `read` will save the full input to the variable anyway (see `help [r]ead`). - A lot of the code is already Python, and Python has *much* fewer caveats than Bash, so changing to it would very much benefit the maintainability of the code. - Bash's `read` takes a `-p prompt` option, so you can avoid the first `printf`. - Unchanging variables such as `URL` should be assigned outside of the loop. Style issues: - Non-exported variables should be lowercase to distinguish them from exported variables. - It is customary to `exit` with a non-zero exit code when a command fails. [1]: http://mywiki.wooledge.org/BashPitfalls#echo_.24foo