2016-12-29 1 views
0

Je me demande comment exécuter trop de boucles en même temps. C'est un peu comme mon autre question, How to exit a Subshell. J'essaye d'avoir deux boucles fonctionnant en même temps, et les ai capables de partager des variables. J'ai essayé d'utiliser un sous-shell (qui a clairement échoué), essayé d'arrière-plan la première boucle et d'exécuter le second, ce qui n'a pas fonctionné. Quelles autres options ai-je?Comment exécuter deux boucles en même temps

+1

[Que voulez-vous accomplir avec ces deux boucles?] (Http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – bishop

+0

J'essaie d'en avoir une à écrire un fichier, et l'autre affiche le fichier avec Zenity. Voir la question liée. – Feldspar15523

+0

1. Pourquoi doivent-ils fonctionner simultanément? 2. Vous avez dit que les méthodes que vous avez essayées n'ont pas fonctionné, mais n'ont pas dit quoi à leur sujet n'a pas fonctionné. – Carcigenicate

Répondre

1

Une façon d'y parvenir serait de mettre les boucles dans les différents scripts et les appeler indépendamment, tels que:

nohup /folder/myLoop1 > /dev/null 2>&1 & 
nohup /folder/myLoop2 > /dev/null 2>&1 & 

En ce qui concerne les variables de partage, d'une façon de le faire serait de stocker la variable un fichier temporaire, qui peut ensuite être consulté par tous les scripts:

echo "$myVar" > /tmp/loopVarHolder 
myVar="$(cat /tmp/loopVarHolder)" 

Enfin, vous pourriez tuer (si vous avez besoin/envie) une boucle (par exemple) myLoop2 lorsque myLoop1 se termine, en ajoutant les éléments suivants (ou similaire) à la fin du scrip myloop1:

killall myLoop2 > /dev/null 2>&1 

Note: L'utilisation nohup sur le terminal (et non sur un script) peut contenir l'invite et créer un fichier nohup.out quelque part si vous n'utilisez pas une redirection, comme > /dev/null 2>&1 lors de l'appel il.