Is it possible to declare at the start of a file that it should be executed as a Groovy script?
Examples for other scripting languages:
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
Is it possible to declare at the start of a file that it should be executed as a Groovy script?
Examples for other scripting languages:
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
This one #!/usr/bin/env groovy
will search your path looking for groovy to execute the script
A common trick is to write a script that has meaning in more than one language, also known as a "polyglot" script.
In the case of Bash and Groovy, this is particularly easy:
#!/bin/sh
//bin/true; exec groovy -cp .. "$0"
println "Hello from Groovy"
#!
) that tells the OS to run the script as a regular shell script./bin/true
command (a no-op); then finds the groovy executable in the PATH and runs it on the script file itself ("$0"
) plus additional arguments, replacing the current shell process (exec
)//
) and will run the rest of the script.If you need a more elaborate shell part, maybe to set up environment variables, or discover where Groovy is installed, you can use a different trick:
#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''
println "Hello from Groovy"
'''':
as two empty strings ''
followed by a colon, which is a no-op.exec
or an exit
"$0"
)'''':
as the beginning of a long string '''
, thus skipping all the shell commands, and then run the rest of the script.According to this you can use #!/usr/bin/groovy
(if that's its location). The search term you are looking for is shebang (which is what that first line is called).