Risposte:
Devi resettare tutti gli argomenti. Per cambiare ad esempio $3
:
$ set -- "${@:1:2}" "new" "${@:4}"
Fondamentalmente imposti tutti gli argomenti ai loro valori correnti, ad eccezione di quelli che desideri modificare. set --
è specificato anche da POSIX 7 .
La "${@:1:2}"
notazione è espansa ai due (da qui 2
la notazione nella notazione) argomenti posizionali a partire da offset 1
(cioè $1
). È un'abbreviazione per "$1" "$2"
in questo caso, ma è molto più utile quando si desidera sostituire ad es "${17}"
.
Ottimizzando la leggibilità e la manutenibilità, potrebbe essere meglio assegnare $1
e $2
a variabili più significative (non lo so, input_filename = $1
e output_filename = $2
o qualcosa del genere) e poi sovrascrivere una di quelle variabili ( input_filename = 'chintz'
), lasciando invariato l'input allo script, nel caso lo sia necessario altrove.