2013-09-10 1 views
24

quando l'ho fatto which groovy, ho avuto l'uscita al di sottoin esecuzione lo script Groovy dalla riga di comando

/usr/local/bin/groovy 

Così sono andato avanti e ha creato un helloworld.groovy con il contenuto sotto

#!/usr/local/bin/groovy 
println "hello world" 

Dopo che ho fatto chmod +x helloworld.groovy e ho tentato di eseguire il file con ./hellworld.groovy e purtroppo ho ricevuto questo errore ./helloworld.groovy: line 2: print: command not found

Potrei ottenere eliminare l'errore passando a

#!/usr/bin/env groovy 
println "hello world" 

quindi la domanda che ho è perché il primo metodo causerebbe l'errore?

+0

C'è una grande discussione su questo argomento in questa risposta http://stackoverflow.com/questions/306139/how-do-i-include-jars-in- a-groovy-script/8945888 # 8945888 – chim

+0

E anche sulla stessa domanda ... http://stackoverflow.com/a/9692013/673282 – chim

risposta

24

è necessario eseguire lo script come questo:

groovy helloworld.groovy 
+4

o semplicemente "groovy helloworld". :) – dmahapatro

+6

dato che groovy è anche un linguaggio di scripting, dovremmo essere in grado di eseguirlo come perl o python giusto? quindi la domanda è perché './helloworld.groovy' restituisce un errore riguardo' println'. qual è la differenza tra '#!/usr/local/bin/groovy' e' #!/usr/bin/env groovy'? – jjennifer

+10

'#!/Usr/local/bin/groovy' è la posizione esatta in cui è installato groovy. Ciò rende lo script non portatile a un altro sistema in cui Groovy è installato altrove. Questo però '#!/Usr/bin/env' groovy chiama il programma"/usr/bin/env "con l'argomento" groovy ", e/usr/bin/env sta cercando la variabile PATH per chiamare" groovy ".
BTW: il migliore shebang è '#!/Usr/bin/env'. Nota lo spazio tra! e /. In questo modo i primi 4 byte di ogni "Script" sono identici (cioè la vecchia scuola per rendere questo il "numero magico" del file) –