"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

Reply via email to