J'ai un script bash similaire à ce qui suit:Comment utiliser la même variable bash entre un shell parent et l'enfant shell
function test
{
running=$(($running - 1))
}
running=0
test &
echo $running
Parce que la fonction de test est exécuté dans un shell sous il ne modifie pas la variable en cours d'exécution et je reçois 0 écho à l'écran. J'ai besoin du sous-shell pour pouvoir changer les variables des shells parents, comment cela peut-il être fait? J'ai essayé l'exportation mais en vain.
EDIT Merci pour toutes les réponses utiles, La raison pour laquelle je veux exécuter cette fonction en arrière-plan est de permettre l'exécution simultanée de plusieurs fonctions. J'ai besoin de pouvoir rappeler le script parent pour le dire quand toutes les fonctions sont terminées. J'avais utilisé des pids pour le faire mais je n'aime pas avoir à vérifier si plusieurs processus sont en permanence en boucle.
En général, cela ne peut pas être fait. Pourquoi exécutez-vous la fonction dans un sous-shell? Et en arrière-plan? Si vous nous dites ce que vous essayez de faire, nous pourrions peut-être vous aider davantage. – thkala
En fait, vous exportez "down", mais pas "up". Dans ce cas, supprimer '&' vous aidera, mais je crois que vous devez vraiment l'exécuter en arrière-plan, si vous mettez cela. – khachik
'((running--))' ou '((--running))' –