# Comment retarder l'exécution d'une partie d'un script shell ?



## Einbert (18 Mai 2004)

Bonjour,

Voilà le problème : pour attribuer une valeur à une variable d'un script shell, je dois exécuter une commande qui doit chercher des informations sur un serveur distant, puis ces informations passent à travers 2 filtres pour que j'obtienne ce que je veux. Le problème c'est que comme la commande prend 2-3 secondes à obtenir l'info et que le script n'attend pas que cette variable ait effectivement une valeur, ce qui fait que le reste du script utilise une valeur de la variable qui est encore vide... Vous me suivez ? Donc comment faire pour retarder l'exécution du reste script, resp.que le script ne continue qu'une fois que la variable ait effectivement une valeur ? Je me suis dit qu'un  _sleep 20_ après l'initialisation de la variable ferait l'affaire, mais cela ne change rien, variable toujours vide ! Comme il me semble qu'il n'y a pas moyen de  _forker_ dans un script shell ... J'ai même essayé avec un
while($#arg == 0)
.......
end

rien à faire. La commande qui attribut la valeur à la variable fonctionne pourtant sans problèmes si je l'exécute...

Une idée ?

++


----------



## kabutop (18 Mai 2004)

Hello,
C'est pas normal ca...
Si tu fais comme ca :

```
LS="`ls /`"
```
Les instructions après ton LS ne seront pas exécutées tant que la variable LS ne sera pas remplie (en fait tant que le ls / ne sera pas exécuté).
Essaye en lancant ta commande de cette manière TAVARIABLE="`ta commande`" et le script ne devrait pas continuer tant que ta commande n'est pas exécutée.

A+


----------



## Einbert (18 Mai 2004)

Je vais essayé ça ...
Cela vient peut-être du fait que j'utilise

set qwer = `my_cmd very long`

au lieu de

set qwer = "`my_cmd very long`"

En fait, je ne savais pas qu'il y avait une différence entre les deux ... Je viens de faire un test pour m'en rendre compte :

set qwer = `ls /`
echo $#qwer
26

puis avec le bon truc

set qwer = "`ls /`"
echo $#qwer
24

En fait il traite les deux traitent les espaces comme séparateur... Vous allez me dire, oui, logique, mais le problème de l'exemple vient du fait qu'il y a deux noms de dossier qui possède un nom avec un espace (pour ne citer que _Desktop DB_  et  _Desktop DF_ ... Donc j'ai hâte d'essayer cela demain 
	

	
	
		
		

		
			





 ...

++


----------

