2011-06-24 5 views
0

J'essaie de lancer une autre application dans un script bash, mais l'application semble quitter mon script pour que la ligne exec $HOME/bin/sync-iosbeta; ne soit pas exécutée. J'ai essayé de le mettre en dehors du si.Exécuter un script dans un autre script externe

if $HOME/bin/BetaBuilder.app/Contents/MacOS/BetaBuilder --args -i "${zip}" -o "${odir}" -u "${ourl}" -r "$PROJECT_FOLDER/README.txt" ; then 
    echo "Wil sync" 
    exec $HOME/bin/sync-iosbeta; 
fi 

echo "This text does not get printed either.."; 

J'ai aussi essayé d'utiliser open pour lancer l'application, mais j'avoir des problèmes avec le passage des arguments, même avec --args ensemble.

Je suis sous Mac OS.

Répondre

2

De l'exec manuel:

Si la commande est spécifié, il remplace la coquille. Aucun nouveau processus n'est créé.

Il suffit de retirer exec et le ";":

if $HOME/bin/BetaBuilder.app/Contents/MacOS/BetaBuilder --args -i "${zip}" -o "${odir}" -u "${ourl}" -r "$PROJECT_FOLDER/README.txt" ; then 
    echo "Wil sync" 
    $HOME/bin/sync-iosbeta 
fi 

echo "This text does not get printed either.."; 

Si synchronisation iosbeta n'est pas en cours d'exécution, alors peut-être qu'il n'a pas les permissions. Essayez:

if $HOME/bin/BetaBuilder.app/Contents/MacOS/BetaBuilder --args -i "${zip}" -o "${odir}" -u "${ourl}" -r "$PROJECT_FOLDER/README.txt" ; then 
    echo "Wil sync" 
    /bin/sh $HOME/bin/sync-iosbeta 
fi 

echo "This text does not get printed either.."; 
+0

Je vois, j'ai supprimé l'exec. mais alors il imprime seulement: Fichier non trouvé. '/ package-app: ligne 94: /BetaBuilder.app/Contents/MacOS/BetaBuilder -i DeploymentTest-7910-7910.zip -o DeploymentTest-DeploymentTest-7910-7910 -u DeploymentTest-DeploymentTest-7910-7910: aucun fichier de ce type ou répertoire BetaBuilder a rencontré une erreur. Vérifiez les journaux du système. Cela fonctionne si j'exécute exactement la même commande dans le terminal. Merci pour votre réponse! – Andi

1

C'est tout le point de exec. man bash: Si la commande est spécifiée, elle remplace le shell.

il suffit de supprimer exec.

Questions connexes