Well, shell_out! will throw an exception if the command fails and shell_out will not. In general, I would like an error to be thrown, so I use shell_out!. But on line 80 I use shell_out because nothing has necessarily gone wrong if the command fails, and what I am really interested in is the exit status of that command.