I need to read and write the positional parameters $@
of a function's caller. The Bash man page says that:
A shell function is an object that is called like a simple command and executes a compound command with a new set of positional parameters
So $@
is rewritten at every call. I looked for some "special parameter" but found nothing. The shell variable BASH_ARGV
seems to solve my problem, however it requires shopt -s extdebug
enabled, what isn't the default behavior in my machine neither looks like a option to turn on in production.
extdebug
If set, behavior intended for use by debuggers is enabled:
...
4. BASH_ARGC and BASH_ARGV are updated as described in their
descriptions above.
...
Is Bash capable of read or write a function's caller $@
without BASH_ARGV
? Do you think that Bash is limited and use another shell for scripting?
Edit: I want a fancy getopt
wrapper inside my helper library. So all behavior related to it goes inside a function. No need to check errors or set --
.
$@
explicitly to the function:func "$@"
. – jw013 Oct 12 '12 at 02:42$@
. I'm writing a wrapper aroundgetopt
for aesthetic purposes. – Pedro Lacerda Oct 12 '12 at 03:40