You can not execute functions inside the do_shortcode()
call like you are trying to. If you are just trying to wrap your post meta content with the shortcode, then you can do it like shown below.
$your_post_meta_variable_content = get_post_meta( $postid, principal_1, true );
echo do_shortcode(
'[learn_more caption="ancila"]'
. $your_post_meta_variable_content .
'[/learn_more]'
);