Shortcode Variations?

function btn($atts, $content = null) {
   extract(shortcode_atts(array('link' => '#', 'color' => 'teal' , 'size' => 'large'), $atts));
   return '<a class="btn '.$size.'" href="'.$link.'" style="background:'.$color.';"><span>' . do_shortcode($content) . '</span></a>';
}

With that function you get by default color teal and size large. I suppose that for size you are using classess and for color just background. If not the case just leave a space and added it on the class attribute.