Pyramid Scheme, 166 156 131131 123 bytes
Saved 10 bytes thanks to Pavel! Saved 2525 33 bytes thanks to Khuldraeseth na'Barya!
^ ^
/ \ / \
/set\ /do \
^-----^ ^-----^
- /l\^- -^ / \
/ine\l\ /#\ /out\
-----/ine\---^-----
----- -
Old answer and explanation (functionally equivalent)
^ ^
/ \ / \
/set\ /do \
^-----^ ^-----^
/a\ /#\/a\ / \
--- ^------ /out\
/l\ ^-----
/ine\ /a\
----- ---
Hehe. I love this language.
Explanation
There are two pyramid chains. The first is:
^
/ \
/set\
^-----^
/a\ /#\
--- ^---
/l\
/ine\
-----
This set
s variable a
to line
(a line read from STDIN), as a value (#
).
The second:
^
/ \
/do \
^-----^
/a\ / \
--- /out\
^-----
/a\
---
This is a do while
loop, with the left pyramid being the condition, and the right one being the body. Equivalent to:
do {
out(a);
} while(a);
which is what we want.