Bash script to rename subfolder to include name of parent folder
You should always double-quote variables that are used as filesystem paths.
This is the same script but with variables correctly double-quoted:

# Parse through all show folders.
for show in /Users/sanjeetsuhag/Desktop/*; do
    # Check if it is a folder.
    if [ -d "$show" ]; then
        # Parse through all season folders.
        for season in "$show"/*; do
            # Check if it is a folder.
            if [ -d "$season" ]; then               
                mv "$season" "$show/$(basename "$show") - $(basename "$season")" 
            fi      
        done
    fi
done


If you change the globs to end with /,
they will match only directories,
and so you can skip the directory checks:

for show in /Users/sanjeetsuhag/Desktop/*/; do
    for season in "$show"/*/; do
        mv "$season" "$show/$(basename "$show") - $(basename "$season")" 
    done
done


You could further optimize this by using pattern substitution instead of basename:

for show in /Users/sanjeetsuhag/Desktop/*/; do
    for season in "$show"/*/; do
        show=${show%/}
        season=${season%/}
        mv "$season" "$show/${show##*/} - ${season##*/}"
    done
done


The ${show%/} is to shave off the trailing /,
and the ${show##*/} is to delete everything until the last /.

Finally, instead of hardcoding the base path /Users/sanjeetsuhag/Desktop,
the script would be more reusable if you make that a command line parameter of the script.