2013-09-10 14 views
24

kiedy zrobiłem which groovy, mam poniżej wyjściesystemem groovy skrypt z linii poleceń

/usr/local/bin/groovy 

Więc poszedł do przodu i stworzyła helloworld.groovy z poniższej treści

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

Potem zrobiłem chmod +x helloworld.groovy i próba uruchomienia pliku z ./hellworld.groovy i niestety, dostałem ten błąd ./helloworld.groovy: line 2: print: command not found

Mogę dostać pozbyć się błędu, zmieniając na

więc pytanie, które mam, to dlaczego pierwsza metoda spowoduje błąd?

+0

Jest wielka dyskusja na ten temat w tej odpowiedzi http://stackoverflow.com/questions/306139/how-do-i-include-jars-in- a-groovy-script/8945888 # 8945888 – chim

+0

A także na to samo pytanie ... http://stackoverflow.com/a/9692013/673282 – chim

Odpowiedz

24

Trzeba uruchomić skrypt tak:

groovy helloworld.groovy 
+4

lub po prostu "groovy helloworld". :) – dmahapatro

+6

ponieważ groovy jest również językiem skryptowym, powinniśmy być w stanie uruchomić go jak perl lub python, prawda? więc pytanie brzmi, dlaczego './helloworld.groovy' zwraca błąd dotyczący' println'. Jaka jest różnica między '#!/usr/local/bin/groovy' i' #!/usr/bin/env groovy'? – jjennifer

+10

'#!/Usr/local/bin/groovy' to dokładna lokalizacja, w której zainstalowano groovy. To sprawia, że ​​skrypt nie jest przenośny w innym systemie, gdzie groovy jest zainstalowany w innym miejscu. To jednak '#!/Usr/bin/env' groovy wywołuje program"/usr/bin/env "z argumentem" groovy ", a/usr/bin/env wyszukuje zmienną PATH, aby wywołać" groovy ".
BTW: lepszym shebangiem jest # #!/usr/bin/env'. Zwróć uwagę na odstęp między! i /. W ten sposób pierwsze 4 bajty każdego "skryptu" są identyczne (to jest stara szkoła, aby uczynić z tego "magiczną liczbę" pliku) –