Why do I get different values for $x$x from the snippets below?
#!/bin/bash x=1 echo fred>junkfred > junk ; while read var ; do x=55 ; done <junk< junk echo x=$x # x=55 .. I'd expect this result x=1 cat junk | while read var ; do x=55 ; done echo x=$x # x=1 .. but why? x=1 echo fred | while read var ; do x=55 ; done echo x=$x # x=1 .. but why?