Fun (?) with SH. (Surprising behaviour...)

idallen at watmath.UUCP idallen at watmath.UUCP
Sat Mar 24 07:55:48 AEST 1984


What does this line in a Bourne Shell command file print, when called
with the command arguments "1 2 3 4"?

   sh -c "/bin/echo And $@ were my arguments."

Answer:

   And 1

Why?  Because of the way "$@" expands, the command line becomes:

   sh -c "/bin/echo And 1" "2" "3" "4 were my arguments."

The invoked shell silently ignores the "2" and all following arguments,
and it executes "/bin/echo And 1".  I suppose this variation on the
expansion of "$@" makes sense (?!), but what reason is there to silently
ignore the following arguments?  (p.s. To fix the problem, change @ to *.)
-- 
        -IAN!  (Ian! D. Allen)      University of Waterloo



More information about the Comp.unix mailing list