0 votes

SH script appelle Perl script. Fonctionne lorsque je double-clique, mais Perl script échoue lorsque j'appelle depuis le terminal.

Je suis un nouveau venu. J'ai un shell script qui appelle simplement un perl script pour créer un fichier. Cela fonctionne si je double-clique sur le fichier SH, mais échoue si j'appelle le fichier dans un terminal. voici l'intégralité du fichier SH :

#! /bin/bash
# Run Will's JSON Script

perl /Users/j.douet/Documents/JSON/pbmJson.pl -i /Jaspersoft/tmp/output/hospicemed/hhcsys/hhcsys_hospicemed_201711251121140465.txt -m newPatient -n 1234 > /Jaspersoft/tmp/output/hospicemed/hhcsys/hhcsys_hospicemed_201711251121140465.json;

C'est vraiment aussi simple que cela. Je ne dispose pas encore d'arguments car je suis en train de tester. Quand je double-clique, mon fichier de sortie est créé, mais quand j'exécute

sh runhmJSON.sh

Je reçois des erreurs dans le perl script, toutes similaires à :

/Users/j.douet/Documents/JSON/pbmJson.pl: line 3: use: command not found

Qu'en pensez-vous ?

1voto

thrig Points 777

Cette erreur indique que votre pbmJson.pl est exécuté par un shell, et non par perl :

$ cat someperlcode
printf "hi\n";
printf "there\n";
use strict;
$ perl someperlcode
hi
there
$ sh someperlcode
hi
there
someperlcode: use: not found
$ use
mksh: use: not found
$ bash
bash-3.2$ use
bash: use: command not found
bash-3.2$ exit
exit
$ 

Tel qu'écrit, je ne vois aucune erreur dans ce que vous avez posté :

$ cat code
#! /bin/bash

perl someperlcode > output
$ chmod +x code
$ rm output
$ ./code
$ cat output
hi
there
$ rm output
$ sh code
$ cat output
hi
there
$

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