2 votes

Commandes bash définies non trouvées lorsqu'elles sont passées dans "do shell script" dans osascript

Je suis nouveau dans le shell script et j'ai récemment écrit un script pour ouvrir une nouvelle fenêtre de terminal et exécuter des fonctions définies via osascript avec "do shell script", mais le résultat a montré la commande non trouvée. Mon script est comme ci-dessous :

#!/bin/bash

hello() {
    echo "Hello World"
}

openNewWindowAndRun() {
    osascript -e "
        tell application \"Terminal\"
            activate        
            do script \"$1\"
        end tell
    "
}

openNewWindowAndRun hello

J'ai également essayé d'appeler directement le hello dans le openNewWindowAndRun mais n'a pas eu de chance :

#!/bin/bash

hello() {
    echo "Hello World"
}

openNewWindowAndRun() {
    osascript -e "
        tell application \"Terminal\"
            activate        
            do script \"hello\"
        end tell
    "
}

openNewWindowAndRun

Lorsque j'ai exécuté le script, il a ouvert la nouvelle fenêtre avec succès mais a affiché le message d'erreur :
enter image description here

Quelqu'un sait-il quelle partie j'ai manqué ici ? Est-il possible de passer une fonction définie comme paramètre à osascript ? Si quelqu'un peut me donner un coup de main, ce serait génial !

0voto

nohillside Points 82672

hello est une fonction définie dans un shell script, elle ne peut être appelée par du code bash qu'à partir du script lui-même. Elle n'est pas accessible directement depuis la ligne de commande (votre capture d'écran) ni depuis Applescript (votre capture d'écran). osascript appel).

Pour résoudre ce problème, vous devez tourner votre hello dans un shell script lui-même.

1 votes

Cela fonctionne maintenant. J'ai copié et collé echo "Hello World" dans un nouveau fichier script, le placer sous la rubrique /usr/local/bin , a couru source ~/.bash_prrofile dans le terminal, définir la permission pour le script et exécuter hello . Merci @nohillside

0 votes

L'exportation @AndyLu est utilisée pour rendre les variables définies dans le script A visibles dans les script/binaires appelés à partir de A.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X