Is there a built in macro like @show that returns a string?

Not that I know of, but it would be pretty easy to write this by copying the @show definition. e.g.

macro showstring(exs...)
    args = []
    for ex in exs
        push!(args, sprint(Base.show_unquoted, ex), " = ", esc(ex), '\n')
    end
    return :(string($(args...)))
end

Why do you need such a macro? Seems a little odd to me.