.'" t
." Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
."
." This code is free software; you can redistribute it and/or modify it
." under the terms of the GNU General Public License version 2 only, as
." published by the Free Software Foundation.
."
." This code is distributed in the hope that it will be useful, but WITHOUT
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
." version 2 for more details (a copy is included in the LICENSE file that
." accompanied this code).
."
." You should have received a copy of the GNU General Public License version
." 2 along with this work; if not, write to the Free Software Foundation,
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
."
." Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
." CA 95054 USA or visit www.sun.com if you need additional information or
." have any questions.
." ` 
.TH jrunscript 1 "06 Aug 2006"
." Generated by html2man

.LP
.SH NAME
jrunscript \- command line script shell
.LP
.SH "SYNOPSIS"
.LP

.LP
.nf
\f3
.fl
\fP\f3jrunscript\fP [ \f2options\fP ] [ arguments... ]
.fl
.fi

.LP
.SH "PARAMETERS"
.LP

.LP
.TP 3
options 
Options, if used, should follow immediately after the command name. 
.TP 3
arguments 
Arguments, if used, should follow immediately after options or command name. 
.LP
.SH "DESCRIPTION"
.LP

.LP
.LP
\f3jrunscript\fP is a command line script shell. jrunscript supports both an interactive (read\-eval\-print) mode and a batch (\-f option) mode of script execution. This is a scripting language independent shell. By default, JavaScript is the language used, but the \-l option can be used to specify a different language. Through Java to scripting language communication, jrunscript supports "exploratory programming" style.
.LP
.LP
\f3NOTE:\fP This tool is \f3experimental\fP and may \f3not\fP be available in future versions of the JDK.
.LP
.SH "OPTIONS"
.LP

.LP
.TP 3
\-classpath path 
Specify where to find the user's .class files that are accessed by the script. 
.TP 3
\-cp path 
This is a synonym for \-classpath \f2path\fP 
.TP 3
\-Dname=value 
Set a Java system property. 
.TP 3
\-J<flag> 
Pass <flag> directly to the Java virtual machine on which jrunscript is run. 
.TP 3
\-l language 
Use the specified scripting language. By default, JavaScript is used. Note that to use other scripting languages, you also need to specify the corresponding script engine's jar file using \-cp or \-classpath option. 
.TP 3
\-e script 
Evaluate the given script. This option can be used to run "one liner" scripts specified completely on the command line. 
.TP 3
\-encoding encoding 
Specify the character encoding used while reading script files. 
.TP 3
\-f script\-file 
Evaluate the given script file (batch mode). 
.TP 3
\-f \- 
Read and evaluate a script from standard input (interactive mode). 
.TP 3
\-help\  
Output help message and exit. 
.TP 3
\-?\  
Output help message and exit. 
.TP 3
\-q\  
List all script engines available and exit. 
.LP
.SH "ARGUMENTS"
.LP
.LP
If [arguments...] are present and if no \f3\-e\fP or \f3\-f\fP option is used, then the first argument is the script file and the rest of the arguments, if any, are passed as script arguments. If [arguments..] and \f3\-e\fP or \f3\-f\fP option are used, then all [arguments..] are passed as script arguments. If [arguments..], \f3\-e\fP and \f3\-f\fP are missing, interactive mode is used. Script arguments are available to a script in an engine variable named "arguments" of type String array.
.LP
.SH "EXAMPLES"
.LP
\f3Executing inline scripts\fP
.LP
.RS 3

.LP
.nf
\f3
.fl
jrunscript \-e "print('hello world')"
.fl
jrunscript \-e "cat('http://java.sun.com')"
.fl
\fP
.fi
.RE

.LP
\f3Use specified language and evaluate given script file\fP
.LP
.RS 3

.LP
.nf
\f3
.fl
jrunscript \-l js \-f test.js
.fl
\fP
.fi
.RE

.LP
\f3Interactive mode\fP
.LP
.RS 3

.LP
.nf
\f3
.fl
jrunscript
.fl
js>print('hello world');
.fl
hello world
.fl
js>34 + 55
.fl
89
.fl
js> thread(function() { print('hello world'); }
.fl
hello world
.fl
js>
.fl
\fP
.fi
.RE

.LP
\f3Run script file with script arguments\fP
.LP
.RS 3

.LP
.nf
\f3
.fl
jrunscript test.js arg1 arg2 arg3
.fl
\fP
.fi
.RE

.LP
test.js is script file to execute and arg1, arg2 and arg3 are passed to script as script arguments. Script can access these using "arguments" array.  
.SH "SEE ALSO"
.LP
.LP
If JavaScript is used, then before evaluating any user defined script, jrunscript initializes certain built\-in functions and objects. These JavaScript built\-ins are documented in jsdocs.
.LP

.LP
 
