using jshell in executable UNIX scripts
Brian Goetz
brian.goetz at oracle.com
Tue Oct 11 19:52:10 UTC 2016
I understand why you'd like to coopt jshell into this -- after all, it
is convenient and it seems "so close" -- but this is trying to turn
jshell into something it wasn't designed for. But this wasn't an
oversight; we deliberately chose to leave this *outside* of the jshell
requirements, because it feels like an entirely different feature.
More generally, "hacks" like this always come back to bite you. What you
want is a "no main, no compile java runner". Jshell looks like that,
but it isn't. When you have nothing, a little of something seems like a
really good idea; but the warts will become apparent almost
immediately. I'd much rather do nothing for this now, and consider
doing something better in the future, than doing something bad now --
which is what this would be.
On 10/10/2016 9:55 AM, Peter Levart wrote:
> Hi,
>
> "jshell" command is a very nice interactive Java shell, but it could
> also be used for scripting. An executable script in any major UNIX OS
> is a textual file with executable permissions that starts with the
> following two characters: #!
> The rest of the 1st line is the path to the interpreter executable and
> any arguments passed to it. The last argument passed to the
> interpreter is the path to the executable script. In case of jshell,
> one would want such script to be written like:
>
> #!/home/peter/Apps64/jdk9/bin/jshell
>
> System.out.println("Hello World!");
>
> /exit
>
>
> The problem is that jshell tries to parse the 1st line using jshell
> syntax and the result of running above executable script is:
>
> | Error:
> | illegal character: '#'
> | #!/home/peter/Apps64/jdk9/bin/jshell
> | ^
> | Error:
> | illegal start of expression
> | #!/home/peter/Apps64/jdk9/bin/jshell
> | ^
> Hello World!
>
>
> The script is actually executed, but the syntax error encountered in
> the 1st line is printed too.
>
> Would it be possible for jshell to skip 1st line if it starts with
> characters #! like other shells do?
>
>
> Regards, Peter
>
More information about the kulla-dev
mailing list