🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.bash.bug
Article #913

Re: Arguments for subroutines

#913
From: Robert Elz
Date: Sun, 23 Aug 1992 15:35
49 lines
1283 bytes
In <9208211821.AA02760@iowa.YP.solsys> kburton@iowa.UUCP (Kevin Burton) writes:

| I have bash-1.12 and am trying to convert some CSH aliases to subroutines
| in bash. I want to be able to get at all of the arguments from a specified
| argument on (like !:3* in CSH).

Try ...

foo()
{
	echo $1
	shift
	echo $*
}

or if you want $1 later

foo()
{
	X=$1
	shift
	echo $*
	echo $X
}

Of course, you can also use $@ instead of $* if that's more suited.

If you need $* put back (for some odd reason "$X $*" is not good enough)
Then you can do

foo()
{
	ARGS=
	while [ $# -gt 0 ]; do
		ARGS="$ARGS '$1'"
		shift
	done
	eval set -$- $ARGS

	X=$1
	shift
	echo $*		# to get the ${2:*} effect
	shift
	echo $*		# now ${3:*}

	eval set -$- $ARGS	# now all args are back as originally
}

kre
Technical Details
Message-ID: <9223701.4748@mulga.cs.mu.OZ.AU>
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!cs.mu.oz.AU!kre
References: <9208211821.AA02760@iowa.YP.solsys>

Show Full Headers
Complete Article Headers
Newsgroups: gnu.bash.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!cs.mu.oz.AU!kre
From: kre@cs.mu.oz.AU (Robert Elz)
Subject: Re: Arguments for subroutines
Message-ID: <9223701.4748@mulga.cs.mu.OZ.AU>
Sender: gnulists@ai.mit.edu
Organization: Computer Science, University of Melbourne, Australia
References: <9208211821.AA02760@iowa.YP.solsys>
Distribution: gnu
Date: Sun, 23 Aug 1992 15:35:29 GMT
Approved: bug-bash@prep.ai.mit.edu
Lines: 50