Php inside the shortcode is getting commented

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]'
);