for x in Lib Sat
do for y in seq 7
eval ${x}${y}=0
done
done
ce qui est une bonne piste de départ. Défaut important, c'est très lent, et quand je dis lent, c'est que pour peu que ta boucle soit un peu longuette, c'est lent de façon très visible. Voici donc quelques pistes pour tâcher de gagner en vitesse.
Tu peux par exemple grouper les affectations, en faisant par exemple:
prepare_init()
{
local x y
for x in Lib Sat
do for y in seq 7
printf '%s%s=0\n' "${x}" "${y}"
done
done
}
eval $(prepare_init)
Oui bien
prepare_init()
{
local x y
for x in Lib Sat
do for y in seq 7
printf '%s%s=0\n' "${x}" "${y}"
done
done
}
perform_init()
{
local external
external=$(mktemp perform_init.XXXXXX)
prepare_init > "${external}"
. "${external}"
rm "${external}"
}
perform_init
Je ne sais pas ce que tu fais exactement, mais en général faire ce genre de choses en shell signale qu'on se trompe un peu de langage. Le shell sert à lancer des programmes, déplacer des fichiers, etc. et traiter les données c'est le travail des programmes, pas du shell qui sert essentiellement à créer la glue entre ces programmes. (C'est mon avis et je le partage — tout le monde n'est pas d'accord.)
# Autres pistes
Posté par Michaël (site web personnel) . En réponse au message Utiliser une concaténation de variable dans FOR. Évalué à 5.
Plusieurs ont indiqué
evalcomme dansce qui est une bonne piste de départ. Défaut important, c'est très lent, et quand je dis lent, c'est que pour peu que ta boucle soit un peu longuette, c'est lent de façon très visible. Voici donc quelques pistes pour tâcher de gagner en vitesse.
Tu peux par exemple grouper les affectations, en faisant par exemple:
Oui bien
Je ne sais pas ce que tu fais exactement, mais en général faire ce genre de choses en shell signale qu'on se trompe un peu de langage. Le shell sert à lancer des programmes, déplacer des fichiers, etc. et traiter les données c'est le travail des programmes, pas du shell qui sert essentiellement à créer la glue entre ces programmes. (C'est mon avis et je le partage — tout le monde n'est pas d'accord.)