réglage variable globale dans bash

J'ai de la fonction de là où je suis attendu pour accrocher de temps en temps. Donc, je suis à la définition d'une variable globale, puis de le lire, si il n'est pas venu après quelques secondes, j'abandonne. Ci-dessous n'est pas complète code mais il ne fonctionne pas comme je ne suis pas d'obtenir $DÉMARRER en tant que valeur de 5

START=0
ineer()
{
    sleep 5
    START=5
    echo "done $START"   ==> I am seeing here it return 5
    return $START
}
echo "Starting"
ineer &

while true
do
    if [ $START -eq 0 ]
    then
        echo "Not null $START"  ==> But $START here is always 0
    else
        echo "else $START"
        break;
    fi
    sleep 1;
done
Je soupçonne que l'exécution de la fonction dans le fond qu'il provoque, pour être exécuté dans un shell interne est exécuté, de sorte que la variable modifications ne sont pas répercutées dans le parent de la coquille.
le délai est d'ajustement exact pour moi, mais Il n'a pas à prendre la fonction de commande
Vous pouvez être intéressé par unix.stackexchange.com/questions/87284/... -- rappelez-vous, @user000001 est exactement ce que ineer est exécuté dans un shell interne est exécuté et n'a pas partagent le même environnement avec son parent coquille, de sorte que vous allez trouver des solutions de contournement sont (pour la plupart impliquant des fichiers).
Vous pourriez avoir besoin de regarder le timeout commande à partir de GNU coreutils. Vous pouvez également retrouver en regardant les signaux (trap et kill) entre l'enfant et le parent processus.

OriginalL'auteur eswaat | 2015-04-16