* wildcard in.sh script

Polytropon freebsd at edvax.de
Tue Jun 15 17:43:15 UTC 2010

On Tue, 15 Jun 2010 09:25:05 -0700, Chip Camden <sterling at camdensoftware.com> wrote:
> As others have mentioned, you need to quote or escape the * in the
> command line:
> admin "cell*"

The problem, for explaination purposes, is that the shell you
enter the command will already expand cell* to cell_A, cell_B
and so on. This means that inside your script $1 will be assigned
the first matching entry, $2 would be the second one, $3 a third
one and so on.

To avoid this, you need to directly communicate the * to your
script's parameter $1, which is done by escaping or quoting it.
In this case, $1 will contain a literal * inside the script.

In most cases when scripting, it's useful not to assume such a
complicated command line processing. You better let the shell
do the expansion of *, so your script gets a lot of parameters,
one for each match, and you then continue to process them.

Another option is to just provide a prefix pattern to your
script, and let IT then add the * to expand it internally
within the script (i. e. by the shell that processes the
script). So you won't have to give a * at the command line
of the calling dialog shell.

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

More information about the freebsd-questions mailing list