Strangeness in shell
Gregory Kemnitz
kemnitz at mitisft.Convergent.COM
Wed Jul 19 18:48:49 AEST 1989
In article <432 at mccc.UUCP> you write:
>
>If I assign a shell variable a value that contains an asterisk, the
>shell behaves strangely if there is a space adjacent to said asterisk.
>For example,
> x='*z'
> echo ${x}
>produces
> *z
>but
> x='* z'
> echo ${x}
>produces
> (a list of all the files in the current directory) z
>
>What does the space have to do with this?
>
>Please mail and I'll summarize if there is interest. Thanks.
>
>--
>Pete Holsberg -- Mercer College -- Trenton, NJ 08690
>...!rutgers!njin!princeton!njsmu!mccc!pjh
Try creating a couple of files in your directory called
foo1z foo2z
Then you will see that in the first example, you have
x='*z'
echo ${x}
yields
foo1z foo2z
The shell tries to expand the star into filenames, and if it can
find any filenames matching the expression *z, it will substitute
them. If it can't, it will keep *z as the value. When you put a space,
(the delimiter the shell uses for arguments) you caused the expression to
be * by itself, which matches every filename by definition except dot files.
Sorry to post, the mailer blew up.
----------------------------------+--------------------------------------
Greg Kemnitz | Software without hardware is an idea.
kemnitz at Convergent.COM | Hardware without software is a space heater.
|
| --Unknown author
More information about the Comp.lang.c
mailing list