Comment changer un argument de ligne de commande de Bash?
Est-il un moyen de modifier les arguments de ligne de commande dans un script Bash. Disons, par exemple, un script Bash est invoqué la manière suivante:
./foo arg1 arg2
Est-il un moyen pour modifier la valeur de arg1 dans le script? Dire quelque chose comme
$1="chintz"
Vous devez vous connecter pour publier un commentaire.
Vous devez réinitialiser tous les arguments. Pour modifier par exemple
$3
:Fondamentalement, vous ensemble tous arguments à leurs valeurs actuelles, à l'exception de celle(s) que vous souhaitez modifier.
set --
est également spécifié par POSIX 7.La
"${@:1:2}"
notation est élargi pour les deux (d'où le2
dans la notation) des arguments de position à partir de l'offset1
(c'est à dire$1
). C'est un raccourci pour"$1" "$2"
dans ce cas, mais il est beaucoup plus utile lorsque vous souhaitez remplacer par exemple"${17}"
.$1
et$2
, bien sûr.eval
à l'avant de la ligne par ceci.L'optimisation de la lisibilité et de facilité de maintenance, vous pouvez être mieux attribution
$1
et$2
à plus significatives des variables (je ne sais pas,input_filename = $1
etoutput_filename = $2
ou quelque chose) et puis l'écrasement de l'un de ces variables (input_filename = 'chintz'
), laissant à l'entrée de l'script inchangé, dans le cas où il est nécessaire ailleurs.