Installation script for Mac OS tool
The first thing I can see that should be changed is to add some checks before/after removing files.  As it is currently written, the script will break if it goes to remove a file that isn't there.  So, for instance, if the uninstall is interrupted halfway (computer unplugged, process killed, whatever), then a subsequent run of the script will throw an error and the last part of the script will never be executed.

For simple checks like these, and for that matter for the single-command if checks you already have, you should just use &amp;&amp; and || instead.

if [ ${uninstallPdfkit} = "y" ];
then
    pip uninstall pdfkit
fi


and

[ ${uninstallPdfkit} = "y" ] &amp;&amp; pip uninstall pdfkit


are exactly equivalent.  Funny thing in this example is that the braces {} are completely unnecessary, as are the double quotes around y, but there should be doublequotes around the variable for safety:

[ "$uninstallPdfkit" = y ] &amp;&amp; pip uninstall pdfkit


So instead of:

rm -rf ~/.eesubmit/
echo "The source code and username file for eesubmit has been removed


You should use:

[ -e ~/.eesubmit ] &amp;&amp; rm -rf ~/.eesubmit &amp;&amp; echo 'The source code and username file for eesubmit has been removed'


This is just scratching the surface; here are some other partial thoughts that could be expanded into further detail:


Why do you echo "Uninstallation complete" if the user decides not to uninstall?
read has a bunch of flags that would be useful; in particular -p to specify a prompt message.  (Use quotes!)
Your big error message has only the first line redirected to stderr.  Consider using single quotes (since you don't need variable expansion) and just have it include multiple lines with one echo command, then redirect to stderr only once for all of it.
You say a shortcut is being created, but you used cp instead of ln -s target linkname.  Also you shouldn't need to use sudo at all.


Hope this helps.