#1 Le 14/02/2011, à 13:53
- YannUbuntu
[Résolu] Modifier une variable dans une fenêtre de progression
Bonjour
Voici un petit exemple du soucis que j'ai :
#!/bin/sh
a=1
(a=2; sudo os-prober) | tee >(zenity --progress --pulsate)
echo "$a"
exit 0
Dans ce cas, echo "$a" me retourne 1. Comment faire pour qu'il me retourne 2 (c'est-a-dire qu'il prenne en compte les opérations réalisées pendant l'exécution de la fenêtre de progression) ?
Dernière modification par YannUbuntu (Le 15/02/2011, à 02:14)
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#2 Le 14/02/2011, à 14:30
- erpiu
Re : [Résolu] Modifier une variable dans une fenêtre de progression
Bonjour,
Je remplacerai les parenthèses par des accolades pour que l'exécution se fasse dans le même environnement shell, conformément au man bash dont voici un extrait :
Compound Commands
A compound command is one of the following:(list) list is executed in a subshell environment (see COMMAND
EXECUTION ENVIRONMENT below). Variable assignments and builtin
commands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.{ list; }
list is simply executed in the current shell environment. list
must be terminated with a newline or semicolon. This is known
as a group command. The return status is the exit status of
list. Note that unlike the metacharacters ( and ), { and } are.............
Cela donnerait donc :
#!/bin/sh
a=1
{a=2; sudo os-prober ; } | tee >(zenity --progress --pulsate)
echo "$a"
exit 0
Hors ligne
#3 Le 14/02/2011, à 14:57
- Totor
Re : [Résolu] Modifier une variable dans une fenêtre de progression
Cela ne changera rien...
l'utilisation du | (lire pipe) génère 2 sous processus et donc une portée de variable local à ces processus.
il faut donc utiliser la substitution de processus :
#!/bin/sh
a=1
{ a=2; sudo os-prober ; } > >(tee >(zenity --progress --pulsate))
echo "$a"
exit 0
Dernière modification par Totor (Le 14/02/2011, à 14:58)
-- Lucid Lynx --
Hors ligne
#4 Le 14/02/2011, à 17:48
- erpiu
Re : [Résolu] Modifier une variable dans une fenêtre de progression
Autant pour moi! La prochaine, je testerai plutôt deux fois qu'une avant d'affirmer des choses....
En tous cas, merci à toi Totor. J'ai ainsi découvert la substitution de processus qui va me permettre de simplifier quelques uns de mes scripts!
Hors ligne
#5 Le 15/02/2011, à 02:16
- YannUbuntu
Re : [Résolu] Modifier une variable dans une fenêtre de progression
Impeccable, merci à vous 2 !
(juste un détail pour les débutants qui nous liraient : ne pas oublier le point virgule à la fin de l'accolade )
[Résolu]
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne