BASH: eval de variable foireu

Résolu/Fermé
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008 - 10 juil. 2008 à 10:33
kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008 - 10 juil. 2008 à 10:53
Bonjour,

Un de mes scripts en bash me fait un eval d'une variable qui, je pense, est un peu foireu.
La myopie étant visiblement en train de s'installer chez moi, j'aurais besoin d'un oeil neuf sur l'eval en question.

Il y a trois fonctions dans la chaine d'appel (je ne compte pas celle de formatage).

#appel la fonction list_pkg_installed, et donne une réponse formatée
test_deps_check

#appel la fonction pkg_installed, et donne en réponse la liste des paquets non installés
#à priori ce serait l'eval placé dans cette fonction qui ne fonctionne pas.
list_pkg_installed

#test si un paquet est installé, et renvoi 0 si oui 1 sinon
pkg_installed

#Test de la fonction test_deps_check
test_deps_check mavar "zlib1g-dev libexpat1-dev paquetBato"
echo -e $mavar

#Usage : test_deps_check mavar_ret "liste de paquets"
test_deps_check()
{	
...
	list_pkg_installed pgk_ni ${2}
	
	if [ $? -eq 0 ]
	then
		greener_text ok "INSTALLÉ"
		eval "$1='${ok}'"
		return 0
	else
		#DEBUG: Affiche la liste des paquets testés et le contenu retour de list_pkg_installed, mais la variable $pkg_ni reste vide
		echo -e "\$2 = ${2}\n\$pkg_ni = ${pkg_ni}"
		
		redder_text failed "À INSTALLER : ${pkg_ni}"
		eval "$1='${failed}'"
		return 1
	fi
}

#Usage : list_pkg_installed mavar monpkg1 monpkg2 monpkg3 ...
list_pkg_installed()
{
...
	#stockage du nom de la variable passée en paramètre
	var_list_pkg_notinst=${1}
	
	#vidange de la variable
	eval "$var_list_pkg_notinst=''"
	
	shift
	
	#Marqueur pour le choix du return
	marqueur=0
	
	#Faire le test sur chaque paquet un à un
	while [ $# -ne 0 ]
	do
		#cette fonction est bonne
		pkg_installed ${1}
		
		#Si le paquet n'est pas installé on le rajoute à la liste des manquants
		if [ $? -eq 1 ]
		then
			#DEBUG: Affiche le nom du paquet testé et absent
			echo "test paquet $1 : absent"
			
			marqueur=1
			#Evalu le nom de la variable contenu dans var_list_pkg_notinst, 
			#et ajoute le paquet actuel ($1) à cette variable
			#eval "$var_list_pkg_notinst=\"\${${var_list_pkg_notinst}} ${1}\""
			eval "$var_list_pkg_notinst='${1}'"
		fi
		
		shift
	done

	return $marqueur
}


Merci par avance

1 réponse

kanar Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 septembre 2008
10 juil. 2008 à 10:53
Problème de myopie résolue !

A la ligne list_pkg_installed pgk_ni ${2} dans test_deps_check()
j'utilise la variable pkg_ni, sauf que je passe pgk_ni
0