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).