Skip to content

Attribuer la même chaîne à plusieurs variables

Solution:

À mon avis, vous feriez mieux de simplement faire le plus lisible:

var1="$value" var2="$value" var3="$value" var4="$value" var5="$value" var6="$value" var7="$value" var8="$value" var9="$value" var10="$value"

Mais si vous voulez un moyen très court d’accomplir cela, essayez :

declare var{1..10}="$value"

Édité: utiliser des extensions d’accolade au lieu de printf et déclarer au lieu d’eval, ce qui pourrait être dangereux selon ce qu’il y a dans $value.

Cf. EDIT1 : Vous pouvez toujours utiliser des extensions d’accolades dans le nouveau cas :

declare var{T,z,3}="$value"

C’est plus sûr que le printf approche dans les commentaires car il peut gérer les espaces dans $value.

let fait une évaluation arithmétique. Dans bash, cela équivaut à (( ... )). C’est pourquoi votre code ne fonctionne que pour les entiers.

Utilisation d’un tableau au lieu de variables spécialement nommées :

var=( "$value"  "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" )

printf 'var[5]=%sn' "${var[5]}"

ou un tableau associatif,

declare -A var

var=( ["T"]=$value ["z"]=$value [3]=$value )

printf 'var[T]=%sn' "${var["T"]}"

Tu peux aussi faire une boucle :

for varname in var0 var1 varT varfoo; do
    declare -n var="$varname"
    var=$value
done

Cette boucle boucle sur les noms de variables. Dans le corps de la boucle, une variable de référence de nom est créée qui référence la variable de boucle actuelle. Lorsque la valeur de la variable de référence de nom est définie, la variable nommée est définie.

value=balabala
eval var{1..10}=$value
echo $var{1..10}



Articles Similaires

Jeton Drupal::setInfo

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.