I want the $icon variable to become the value of icon attribute of custom-link I set:
If I understood your question correctly, this is what you want,
function custom_link($atts, $custom_title)
{
include "PATH_TO_YOUR_PHP_FILE_CONTAINING_ICON_VARS";
$url = $atts['url'];
$color = $atts['color'];
$icon = $atts['icon'];
$icon = $$icon; // $$icon is $icon_paypal
return '<a class="button-round custom-link" style="background-color: ' . $color . ' !important;" href="' . $url . '" target="_blank">' . $icon . '<span>' . $custom_title . '</span></a>';
}
add_shortcode('custom-link', 'custom_link');
So a shortcode
[custom-link url="/someurl" color="#092F87" icon="icon_paypal"]Donate[/custom-link]
will generate
<a class="button-round custom-link" style="background-color: ' . $color . ' !important" href="' . $url . '" target="_blank">' . $icon_paypal . '<span>' . $custom_title . '</span></a>