jjennifer
jjennifer

Reputation: 1315

Running Groovy script from the command line

When I did which groovy, I got the below output:

/usr/local/bin/groovy

So I went ahead and created a helloworld.groovy with the below content

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

After that I did chmod +x helloworld.groovy and attempted to run the file with ./hellworld.groovy and sadly, I got this error ./helloworld.groovy: line 2: print: command not found

I could get rid of the error by changing to

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

Why would the first method cause the error?

Upvotes: 59

Views: 173955

Answers (4)

SP QRT
SP QRT

Reputation: 127

#!groovy
println("hello world!")
$ chmod +x script.groovy
$ ./script.groovy

Upvotes: 0

dieter
dieter

Reputation: 1469

#!/bin/sh
sed '1,2d' "$0"|$(which groovy) /dev/stdin; exit;

println("hello");

Upvotes: 0

Chris Dukes
Chris Dukes

Reputation: 11

It will work on Linux kernel 2.6.28 (confirmed on 4.9.x). It won't work on FreeBSD and other Unix flavors.

Your /usr/local/bin/groovy is a shell script wrapping the Java runtime running Groovy.

See the Interpreter Scripts section of EXECVE(2) and EXECVE(2).

Upvotes: 0

grantmcconnaughey
grantmcconnaughey

Reputation: 10689

You need to run the script like this:

groovy helloworld.groovy

Upvotes: 88

Related Questions