Is there a way to change the command line arguments in a Bash script. Say for example, a Bash script is invoked the following way:
./foo arg1 arg2
Is there a way to change the value of arg1 within the script? Say, something like
$1="chintz"
Is there a way to change the command line arguments in a Bash script. Say for example, a Bash script is invoked the following way:
./foo arg1 arg2
Is there a way to change the value of arg1 within the script? Say, something like
$1="chintz"
You have to reset all arguments. To change e.g.
$3
:Basically you set all arguments to their current values, except for the one(s) that you want to change.
set --
is also specified by POSIX 7.The
"${@:1:2}"
notation is expanded to the two (hence the2
in the notation) positional arguments starting from offset1
(i.e.$1
). It is a shorthand for"$1" "$2"
in this case, but it is much more useful when you want to replace e.g."${17}"
.Optimising for legibility and maintainability, you may be better off assigning
$1
and$2
to more meaningful variables (I don't know,input_filename = $1
andoutput_filename = $2
or something) and then overwriting one of those variables (input_filename = 'chintz'
), leaving the input to the script unchanged, in case it is needed elsewhere.