Lo script SH chiama lo script Perl. Funziona quando faccio doppio clic, ma lo script Perl non riesce quando chiamo dal terminale

0

Grave newb qui. Ho uno script di shell che chiama semplicemente uno script perl per creare un file. Funziona se faccio doppio clic sul file SH, ma fallisce se chiamo il file in un terminale. ecco l'intero file 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;

È davvero così semplice. Non ho ancora argomenti come sto testando. Quando faccio doppio clic, il mio file di output viene creato, ma quando eseguo

sh runhmJSON.sh

Ricevo errori all'interno dello script perl, tutti simili a:

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

Pensieri?

    
posta John Douet 27.11.2017 - 17:37
fonte

1 risposta

1

Questo errore indica che il tuo pbmJson.pl viene eseguito da una shell e non da 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
$ 

Come scritto, non vedo errori in quello che hai postato:

$ 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
$ 
    
risposta data 27.11.2017 - 20:27
fonte

Leggi altre domande sui tag