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

0

Newb severo aquí. Tengo un script de shell que simplemente llama a un script de perl para crear un archivo. Funciona si hago doble clic en el archivo SH, pero falla si invoco el archivo en un 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;

Realmente es así de simple. No hay argumentos aún como estoy probando. Cuando hago doble clic, se crea mi archivo de salida, pero cuando lo ejecuto

sh runhmJSON.sh

Recibo errores dentro del script perl, todos similares a:

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

¿Pensamientos?

    
pregunta John Douet 27.11.2017 - 17:37

1 respuesta

1

Ese error indica que 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 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
$ 
    
respondido por el thrig 27.11.2017 - 20:27

Lea otras preguntas en las etiquetas