Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 13h32   #1
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Par défaut Définition de variable sur la ligne d'appel d'un programme ou d'une fonction.

Bonjour.

J'aurai besoin d'un avis éclairé sur le problème suivant.

J'ai un script dans lequel j'enchaine trois "instructions" :
- invocation du script configure
- invocation du programme make
- invocation d'une fonction locale au script

Par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#!/bin/bash
 
foo()
{
echo $CFLAGS
}
 
configure CFLAGS="-g"
 
make CFLAGS="-g"
 
CFLAGS="-g" foo
Il semble que configure et make prennent bien en compte la variable CFLAGS et ne la confondent pas avec un paramètre.
Par contre, il faut impérativement que je définisse ma variable AVANT foo pour qu'elle soit définie.

Mes questions sont donc :
- est-ce que make et configure "eval"uent tous les paramètres non reconnus pour que cela fonctionne ?
- quelle est votre pratique habituelle, définir les variable toujours avant ou quoi ?

Voila.

Merci pour votre aide.

A bientôt.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 25/02/2011, 13h22   #2
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Personnellement, je pense que j'essaierais ça:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
 
foo()
{
echo $CFLAGS
}
 
export CFLAGS="-g"
 
configure
 
make
 
foo
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 22
Vieux 26/02/2011, 09h55   #3
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Oui je pourrais faire cela, mais au milieu d'un plus long scripts, je souhaitais définir CFLAGS localement pour ces trois appels.

Du coup avec votre solution, je dois faire un unset après... mouais pourquoi pas ?!

Merci pour votre suggestion.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 26/02/2011, 11h19   #4
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 978
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 978
Points : 6 027
Points : 6 027
Bonjour.

L'export n'est ici pas permanent, la variable CFLAGS cessera d'exister à la fermeture du shell.

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/02/2011, 15h13   #5
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
@valefor: tu enregistres l'ancienne valeur avec de refaire un export
Code :
1
2
3
4
5
 
OLDCFLAGS=$CFLAGS
export CFLAGS="nouvellevaleur"
... les traitements ...
export CFLAGS=$OLDCFLAGS
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 10/03/2011, 13h12   #6
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 055
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 3 055
Points : 4 934
Points : 4 934
Pourquoi exporter cette variable ?
L'export ne se justifie que 1) si le script fait appel a un autre script ET 2) si on a besoin que l'autre script connaisse ladite variable.
Là, tout se passe dans le même shell...

Déjà à la base je ne comprends pas le problème initial. Moi j'ai tapé ça vite fait
Code bash :
1
2
3
4
5
6
7
8
9
#!/bin/sh
 
fct()
{
        echo $var
}
 
var=toto
fct

Et j'ai bien ma variable "var" connue de la fonction fct. Donc en fait je ne pige pas où il y a problème avec CFLAGS...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 13h53   #7
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Je pense que $CFLAGS est un peu utilisé par configure/make et compagnie ;o)
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 10/03/2011, 15h34   #8
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 055
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 3 055
Points : 4 934
Points : 4 934
Citation:
Envoyé par Alek-C Voir le message
Je pense que $CFLAGS est un peu utilisé par configure/make et compagnie ;o)
Exact. C'est cette histoire de fonction qui m'a un peu déboussolé. Je pensais que CFLAGS n'était pas connu de foo().

Toutefois, (sauf si on a besoin, dans le script, de retrouver sa valeur initiale), inutile de le sauvegarder avant export ...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 15h57   #9
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Je ne sais pas, dans un post, il disait cela :
Citation:
Envoyé par valefor Voir le message
Oui je pourrais faire cela, mais au milieu d'un plus long scripts, je souhaitais définir CFLAGS localement pour ces trois appels.
Du coup, j'ai supposé qu'il avait besoin de retrouver la valeur d'origine après ces trois appels d'où ma proposition... mais dans mon premier exemple, je ne faisais pas de sauvegarde

Enfin bref, de toute façon, ça fait presque 2 semaines là, donc je pense que c'est bon depuis :p
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 02
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h36.


 
 
 
 
Partenaires

Hébergement Web