0 votos

SH script llama a Perl script. Funciona cuando hago doble clic, pero Perl script falla cuando llamo desde el terminal

Severo novato aquí. Tengo un shell script que simplemente llama a un perl script para crear un archivo. Funciona si hago doble clic en el archivo SH, pero falla si llamo al archivo en una terminal. aquí está el archivo SH completo:

#! /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;

Es así de sencillo. Todavía no hay argumentos porque estoy haciendo pruebas. Cuando hago doble clic, mi archivo de salida se crea, pero cuando ejecuto

sh runhmJSON.sh

Me salen errores dentro del perl script, todos similares a:

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

¿Qué opinas?

1voto

thrig Puntos 101

Ese error indica que su pbmJson.pl está siendo ejecutado por un shell, y no por 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
$ 

Tal y como está escrito, no veo ningún error en lo que has publicado:

$ 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
$

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X