readlinkをわんらいなで使う場合

シンボリックリンク先をワンライナーで取得したかったんだけど↓
target=`readlink /path/to/symbolic/link` | echo $target
でできなくて何でだーと思ってたら↓で出来た。
target="$(dirname "$(readlink /path/to/symbolic/link)")" | echo $target

なんで出来なかったのかと思って$targetの中身を調べてみたら「31」とかの数値が出てきて「?」
readlinkの戻り値調べたら

成功すると、 readlink() は buf に格納されたバイト数を返す。

ってちゃんと書いてある…そりゃダメだわ。。。
んじゃ逆になんで「readlink /path/to/symbolic/link」単体で実行するとパスがちゃんと表示されるんだ?

ちなみにこんな使い方も出来るのね↓
readlink -e $(which javac)