vimscriptで外部コマンドの出力結果を変数に代入する方法を探しています。

例えば、vimscriptでlsコマンドを実行し、その結果を変数に代入したいと思い、
下記のコードを実行したのですが、

redir => message
execute ":!ls"
redir END

echo message

message変数には":!ls"というコマンドそのものが代入されており、
lsの出力は代入されていませんでした。
lsの出力をmessage変数に代入するにはどのようにすれば良いでしょうか?

よろしくお願いします