J'ai une situation où j'ai une commande dans mon script shell qui doit être exécuté après une commande forte> sortie forge> est exécutée dans le même script ( je sais !! Ça semble fou! ! em>) Je veux trouver une solution pour quelque chose comme p> ici je veux la commande Contraintes: Strong> 1) Je ne peux pas modifier le Je ne sais pas s'il y a une solution pour cela, mais toute aide est appréciée. P > p> toucher ~ / abc.txt code > Exécuter après
Quitter $? code> a exécuté et la commande
touch ~ / abc.txt code> peut être une commande. p>
Quitter $? code> partie du script ci-dessus. 2) La commande doit être exécutée uniquement après la sortie
$? Code> commande. P>
4 Réponses :
Je doute que la voie directe est possible de quelque manière que ce soit. p>
Mais il pourrait y avoir une solution de contournement: pouvez-vous envelopper le script d'exécution dans un autre processus? Ensuite, vous pouvez appeler tout ce que vous voulez dans le script d'emballage une fois que le script enveloppé a exécuté sa sortie () et est retiré de la pile. p>
Je ne sais pas pourquoi vous voulez faire quelque chose comme ça, mais peut-être essayer quelque chose comme ceci: enveloppez votre script dans un autre. Dans votre script parent, évaluez votre script enfant avec une commande comme Eval ou Source, puis extrayez de votre dernière commande de script enfant et l'exécute séparément de la même manière. p>
Autant que je veux, je ne peux pas utiliser un wrapper sur mon script car je modifie le script "tcruntime-ctl.sh" de Vfabric Tcserver.
Je suis obligé de modifier uniquement ce script maintenant! :(
@Latestversion Pourquoi ne pouvez-vous pas modifier celui-ci?
@Latestversion C'est une idée folle mais peut-être mettre cette commande d'évaluation dans le même script. Quelque chose comme exécuté (toutes les autres lignes de ce script), puis exécutant la dernière.
Je ne peux pas gâcher certaines parties du script et de la sortie $? Code> est l'un d'entre eux. J'ai une situation où je reçois une "sortie" lorsque ce
Quitter $ $? Code> est excité. Cette "sortie" générée n'est pas sous mon contrôle et fait partie d'un programme Java. Maintenant, je veux pouvoir exécuter une commande après la sortie
$? Code> est exécutée et doit faire partie du même script que je suis contraint d'introduire quoi que ce soit d'autre dans le projet. Je suis attaché!!
L'approche typique consiste à définir un piège: Ceci sera appelé la commande tactile lorsque la coque se ferme. Dans certaines obus (par exemple, bash code>), le piège sera également exécuté si le script se termine comme le résultat d'un signal, mais dans d'autres (par exemple,
Dash code>). Il n'y a pas de moyen portable d'appeler la commande uniquement si la dernière commande était
Quitter code>. P> p>
Cela devrait fonctionner, même si OP ne voulait pas déplacer la sortie.
#!/bin/sh ls -l ~/. RES=$? #save res for later. touch ~/abc.txt exit $RES
Pouvons-nous savoir pourquoi vous ne pouvez pas modifier ces premières lignes?
Pardon!! J'ai édité les contraintes une partie de ma question maintenant. Je peux changer quelque chose dans le script mais la commande de sortie doit rester !!
Si vous ne pouvez pas modifier le script, comment vous attendez-vous à ajouter la commande
touche code>? Si vous peut i> Modifiez le script, pourquoi ne pouvez-vous pas l'ajouter au-dessus du
Quitter code>?
Cela ne mène nulle part où vous n'essayez évidemment d'essayer de changer de symptômes au lieu de traiter le problème. Qu'essayez-vous d'atteindre? Pourquoi voulez-vous faire cela ?