the pipe based approach has the wonderful property that it's trivial to truncate the 'program' at any point and see the output at that stage (with normal tools like head/less/wc/etc)
In fact, I normally build up the monster pipe shell programs iteratively this way, one chunk at a time.