Créer un tableau en boucle à partir du nombre d'arguments
#!/bin/bash
COUNTER=$#
until [ $COUNTER -eq 0 ]; do
args[$COUNTER]=$$COUNTER
let COUNTER-=1
done
echo ${args[@]}
Lorsque je l'exécute, j'obtiens les résultats suivants
user@host:~/sandbox# ./script.sh first second third
$1 $2 $3
et je suis en espérant que cela l'écho de ce que $1, $2 et $3 ne sont pas un texte à valeur de "$1"
Je suis en train d'écrire un script en bash qui va créer un tableau de la taille du nombre d'arguments, je lui donne.
J'attends
user@host:~/sandbox# ./script.sh alpha bravo charlie
alpha bravo charlie
ou
user@host:~/sandbox# ./script.sh 23425 jasson orange green verb noun coffee
23425 jasson orange green verb noun coffee
L'objectif est donc de faire
args[0]=$1
args[1]=$2
args[2]=$3
args[3]=$4
La façon que je l'ai, le $1,$2,$3
ne sont pas interpolés, mais simplement en se lire comme une chaîne de texte.
source d'informationauteur spezticle
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
+=
opérateur d'ajouter à un tableau.Ceci montre que l'ajout peut être fait, mais la façon la plus simple pour obtenir les résultats souhaités est:
ou
Si vous souhaitez conserver votre méthode, vous devez utiliser indirection avec
!
:De la fête de référence: