Unix Shell - How to unset $1?

This is Interesting: Free IT Magazines  
Home > Archive > Unix Shell > January 2006 > How to unset $1?





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author How to unset $1?
SQ

2006-01-29, 9:31 pm


I have $1, $2, $3 command line arguments that remain after a script is
called.

If the next script is called without command line arguments, these $1,
$2, $3
are still in the environment and are evaluated by getops. Is there any
way
to clear these positional arguments?

echo $1 $2 $3
-abc -def -ghi

$ unset 1
ksh: 1: is not an identifier

Stephane Chazelas

2006-01-29, 9:31 pm

On 27 Jan 2006 09:02:12 -0800, SQ wrote:
>
> I have $1, $2, $3 command line arguments that remain after a script is
> called.
>
> If the next script is called without command line arguments, these $1,
> $2, $3
> are still in the environment and are evaluated by getops. Is there any
> way
> to clear these positional arguments?
>
> echo $1 $2 $3
> -abc -def -ghi
>
> $ unset 1
> ksh: 1: is not an identifier

[...]

I don't understand your issue. But to clear the positionnal
parameters, you can either do:

shift "$#"

or

set --

If you want to make so that $2 now becomes $1 (and $3, $2...)
it's simply: shift

If you want to run getopts twice in a script with a different
set of positional parameters, remember to reset OPTIND to 1
(OPTIND=1).

--
Stephane
Chris F.A. Johnson

2006-01-29, 9:31 pm

On 2006-01-27, SQ wrote:
>
> I have $1, $2, $3 command line arguments that remain after a script is
> called.
>
> If the next script is called without command line arguments, these
> $1, $2, $3 are still in the environment and are evaluated by getops.
> Is there any way to clear these positional arguments?


Unless you a) source the next script, or b) place the arguments on
the command line, they will not be passed to another script.

> echo $1 $2 $3
> -abc -def -ghi
>
> $ unset 1
> ksh: 1: is not an identifier


To remove the first positional parameter ($1):

shift

To remove them all:

shift $#

Or use set:

set --

--
Chris F.A. Johnson, author | <http://cfaj.freeshell.org>
Shell Scripting Recipes: | My code in this post, if any,
A Problem-Solution Approach | is released under the
2005, Apress | GNU General Public Licence
SQ

2006-01-29, 9:31 pm



Thank you. . . .

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com