"Alfred M. Szmidt" <[EMAIL PROTECTED]> wrote: > Could someone explain the following behaviour for me? Because I sure > do not understand it. > > [EMAIL PROTECTED]:/tmp/foo$ touch 1 2 3 4 5 > [EMAIL PROTECTED]:/tmp/foo$ foo=`ls` > [EMAIL PROTECTED]:/tmp/foo$ /bin/echo $foo > 1 2 3 4 5 > [EMAIL PROTECTED]:/tmp/foo$ /bin/echo "$foo" > 1 > 2 > 3 > 4 > 5
I assume the newlines are the part you don't understand. Command substitution works by the shell creating a pipe to capture the output; when ls sees that it is writing to a pipe, it defaults to -1 instead of -C. When the variable expansion is unquoted, $foo is split into words passed as separate arguments, and echo separates them with spaces. When it is quoted, the newlines are retained within the single argument, and echo writes that argument as-is. paul _______________________________________________ Bug-coreutils mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/bug-coreutils