This is a difficult-to-reproduce bug since it only occurs due to outside influences. However, I believe libtool's behaviour could be improved to make it more obvious what is going on when the bug occurs.
Many instances of the symptom can be found by doing an internet search for "libtool global_symbol_pipe". Basically the configure check for the sed _expression_ to parse the output of nm can fail, without causing configure to abort.
checking command to parse /usr/bin/nm -B output from gcc object... failed
This results in the variable global_symbol_pipe being empty in the generated libtool script, which causes compilation to fail later on:
libtool: link: /usr/bin/nm -B <OBJECT-FILES> | | /bin/sed 's/.* //' | sort | uniq > <EXPORTED-SYMBOL-FILE>
./libtool: eval: line <LINE>: syntax error near unexpected token `|'
(The empty space between the pipes is where the empty global_symbol_pipe variable is plugged in.)
That this happens is not libtool's fault, it's generally caused by a misconfigured nm. However, I believe it would lead to fewer headaches for libtool users if configure aborted with an explanation, or the libtool script itself was more robust to the empty variable and didn't try to pipe nm output through nothing.