зеркало из https://github.com/mozilla/pjs.git
275 строки
8.3 KiB
HTML
275 строки
8.3 KiB
HTML
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="Author" content="Norris Boyd">
|
|
<meta name="GENERATOR" content="Mozilla/4.7 [en]C-NSCP (WinNT; U) [Netscape]">
|
|
<title>JavaScript Shell</title>
|
|
</head>
|
|
<body bgcolor="#FFFFFF">
|
|
|
|
<center>
|
|
<h1>
|
|
JavaScript Shell</h1></center>
|
|
The JavaScript shell provides a simple way to run scripts in batch mode
|
|
or an interactive environment for exploratory programming.
|
|
<h2>
|
|
Invoking the Shell</h2>
|
|
<tt>java org.mozilla.javascript.tools.shell.Main [<i>options</i>]
|
|
<i>script-filename-or-url</i> [<i>script-arguments</i>]</tt>
|
|
<p>where <tt><i>options</i></tt> are:
|
|
<p>
|
|
|
|
<tt>-e <i>script-source</i></tt>
|
|
<blockquote>Executes <i>script-source</i> as a JavaScript script.</blockquote>
|
|
<tt>-f <i>script-filename-or-url</i></tt>
|
|
<blockquote>Reads <i>script-filename-or-url</i> content and execute it as a JavaScript script.</blockquote>
|
|
|
|
<tt>-opt <i>optLevel</i></tt>
|
|
<br><tt>-O <i>optLevel</i></tt>
|
|
<blockquote>
|
|
Optimizes at level <i>optLevel</i>, which must be an integer between
|
|
0 and 9. See <a href="opt.html">Optimization</a> for more details.
|
|
</blockquote>
|
|
|
|
<tt>-version <i>versionNumber</i></tt>
|
|
<blockquote>
|
|
Specifies the language version to compile with. The string <i>versionNumber</i>
|
|
must be one of <tt>100</tt>, <tt>110</tt>, <tt>120</tt>, <tt>130</tt>,
|
|
or <tt>140</tt>. See <a href="overview.html#versions">JavaScript Language
|
|
Versions</a> for more information on language versions.
|
|
</blockquote>
|
|
|
|
<tt>-strict</tt>
|
|
<blockquote>
|
|
Enable strict mode.
|
|
</blockquote>
|
|
|
|
<tt>-continuations</tt>
|
|
<blockquote>
|
|
Enable experiments support for continuations and set the optimization level to -1 to force interpretation mode.
|
|
</blockquote>
|
|
|
|
If the shell is invoked with the system property rhino.use_java_policy_security set to true and with a security manager installed, the shell restricts scripts permissions based on their URLs according to Java policy settings. This is available only if JVM implements Java2 security model.
|
|
|
|
<h2>
|
|
Predefined Properties</h2>
|
|
Scripts executing in the shell have access to some additional properties
|
|
of the top-level object.
|
|
<br>
|
|
<h4>
|
|
arguments</h4>
|
|
|
|
<blockquote>The <tt>arguments</tt> object is an array containing the strings
|
|
of all the arguments given at the command line when the shell was invoked.</blockquote>
|
|
|
|
<h4>
|
|
help()</h4>
|
|
|
|
<blockquote>Executing the help function will print usage and help messages.</blockquote>
|
|
|
|
<h4>
|
|
defineClass(<i>className</i>)</h4>
|
|
|
|
<blockquote>Define an extension using the Java class named with the string
|
|
argument <i>className</i>. Uses ScriptableObject.defineClass() to define
|
|
the extension.</blockquote>
|
|
|
|
<h4>
|
|
deserialize(<i>filename</i>)</h4>
|
|
|
|
<blockquote>Restore from the specified file an object previously written by a call to <tt>serialize</tt>.</blockquote>
|
|
|
|
<h4>
|
|
load([<i>filename</i>, ...])</h4>
|
|
|
|
<blockquote>Load JavaScript source files named by string arguments. If
|
|
multiple arguments are given, each file is read in and executed in turn.</blockquote>
|
|
|
|
<h4>
|
|
loadClass(<i>className</i>)</h4>
|
|
|
|
<blockquote>Load and execute the class named by the string argument <i>className</i>.
|
|
The class must be a class that implements the Script interface, as will
|
|
any script compiled by <a href="jsc.html">jsc</a>.</blockquote>
|
|
|
|
<h4>
|
|
print([<i>expr</i> ...])</h4>
|
|
|
|
<blockquote>Evaluate and print expressions. Evaluates each expression,
|
|
converts the result to a string, and prints it.</blockquote>
|
|
|
|
<h4>
|
|
readFile(<i>path</i> [, <i>characterCoding</i>)</h4>
|
|
|
|
<blockquote>Read given file and convert its bytes to a string using the
|
|
specified character coding or default character coding if explicit coding
|
|
argument is not given.</blockquote>
|
|
|
|
<h4>
|
|
readUrl(<i>url</i> [, <i>characterCoding</i>)</h4>
|
|
|
|
<blockquote>Open an input connection to the given string url, read all its
|
|
bytes and convert them to a string using the specified character coding or
|
|
default character coding if explicit coding argument is not given.</blockquote>
|
|
|
|
<h4>
|
|
runCommand(<i>commandName</i>, [<i>arg</i>, ...] [<i>options</i>])</h4>
|
|
|
|
<blockquote>Execute the specified command with the given argument and options
|
|
as a separate process and return the exit status of the process. For details, see JavaDoc for <a href="http://lxr.mozilla.org/mozilla/source/js/rhino/toolsrc/org/mozilla/javascript/tools/shell/Global.java">org.mozilla.javascript.tools.shell.Global#runCommand</a>.</blockquote>
|
|
|
|
<h4>
|
|
seal(<i>object</i>)</h4>
|
|
<blockquote>Seal the specified object so any attempt to add, delete or modify its properties would throw an exception.</blockquote>
|
|
|
|
<h4>
|
|
serialize(<i>object</i>, <i>filename</i>)</h4>
|
|
<blockquote>Serialize the given object to the specified file.</blockquote>
|
|
|
|
<h4>
|
|
spawn(<i>functionOrScript</i>)</h4>
|
|
|
|
<blockquote>Run the given function or script in a different thread.</blockquote>
|
|
|
|
<h4>
|
|
sync(<i>function</i>)</h4>
|
|
|
|
<blockquote>creates a synchronized function (in the sense of a Java synchronized method) from an existing function. The new function synchronizes on the <code>this</code> object of its invocation.</blockquote>
|
|
|
|
<h4>
|
|
quit()</h4>
|
|
|
|
<blockquote>Quit shell. The shell will also quit in interactive mode if
|
|
an end-of-file character is typed at the prompt.</blockquote>
|
|
|
|
<h4>
|
|
version([<i>number</i>])</h4>
|
|
|
|
<blockquote>Get or set JavaScript version number. If no argument is supplied,
|
|
the current version number is returned. If an argument is supplied, it
|
|
is expected to be one of <tt>100</tt>, <tt>110</tt>, <tt>120</tt>, <tt>130,</tt>
|
|
or <tt>140</tt> to indicate JavaScript version 1.0, 1.1, 1.2, 1.3, or 1.4
|
|
respectively.</blockquote>
|
|
|
|
<h2>
|
|
Example</h2>
|
|
|
|
<h4>Invocation</h4>
|
|
Here the shell is invoked three times from the command line. (The system
|
|
command prompt is shown as <tt>$</tt>.) The first invocation executes a
|
|
script specified on the command line itself. The next invocation has no
|
|
arguments, so the shell goes into interactive mode, reading and evaluating
|
|
each line as it is typed in. Finally, the last invocation executes a script
|
|
from a file and accesses arguments to the script itself.
|
|
<pre>
|
|
$ java org.mozilla.javascript.tools.shell.Main -e print('hi')
|
|
hi
|
|
$ java org.mozilla.javascript.tools.shell.Main
|
|
js> print('hi')
|
|
hi
|
|
js> 6*7
|
|
42
|
|
js> function f() {
|
|
return a;
|
|
}
|
|
js> var a = 34;
|
|
js> f()
|
|
34
|
|
js> quit()
|
|
$ cat echo.js
|
|
for (i in arguments) {
|
|
print(arguments[i])
|
|
}
|
|
$ java org.mozilla.javascript.tools.shell.Main echo.js foo bar
|
|
foo
|
|
bar
|
|
$
|
|
</pre>
|
|
|
|
<h4>spawn and sync</h4>
|
|
The following example creates 2 threads via <tt>spawn</tt> and uses <tt>sync</tt> to create a synchronized version of the function <tt>test</tt>.
|
|
|
|
<pre>
|
|
js> function test(x) {
|
|
print("entry");
|
|
java.lang.Thread.sleep(x*1000);
|
|
print("exit");
|
|
}
|
|
js> var o = { f : sync(test) };
|
|
js> spawn(function() {o.f(5);});
|
|
Thread[Thread-0,5,main]
|
|
entry
|
|
js> spawn(function() {o.f(5);});
|
|
Thread[Thread-1,5,main]
|
|
js>
|
|
exit
|
|
entry
|
|
exit
|
|
</pre>
|
|
|
|
<h4>runCommand</h4>
|
|
Here is few examples of invoking <tt>runCommand</tt> under Linux.
|
|
<pre>
|
|
js> runCommand('date')
|
|
Thu Jan 23 16:49:36 CET 2003
|
|
0
|
|
// Using input option to provide process input
|
|
js> runCommand("sort", {input: "c\na\nb"})
|
|
a
|
|
b
|
|
c
|
|
0
|
|
js> // Demo of output and err options
|
|
js> var opt={input: "c\na\nb", output: 'Sort Output:\n'}
|
|
js> runCommand("sort", opt)
|
|
0
|
|
js> print(opt.output)
|
|
Sort Output:
|
|
a
|
|
b
|
|
c
|
|
js> var opt={input: "c\na\nb", output: 'Sort Output:\n', err: ''}
|
|
js> runCommand("sort", "--bad-arg", opt)
|
|
2
|
|
js> print(opt.err)
|
|
/bin/sort: unrecognized option `--bad-arg'
|
|
Try `/bin/sort --help' for more information.
|
|
|
|
js> runCommand("bad_command", "--bad-arg", opt)
|
|
js: "<stdin>", line 18: uncaught JavaScript exception: java.io.IOException: bad_command: not found
|
|
js> // Passing explicit environment to the system shell
|
|
js> runCommand("sh", "-c", "echo $env1 $env2", { env: {env1: 100, env2: 200}})
|
|
100 200
|
|
0
|
|
js> // Use args option to provide additional command arguments
|
|
js> var arg_array = [1, 2, 3, 4];
|
|
js> runCommand("echo", { args: arg_array})
|
|
1 2 3 4
|
|
0
|
|
</pre>
|
|
<p>
|
|
Examples for Windows are similar:
|
|
<pre>
|
|
js> // Invoke shell command
|
|
js> runCommand("cmd", "/C", "date /T")
|
|
27.08.2005
|
|
0
|
|
js> // Run sort collectiong the output
|
|
js> var opt={input: "c\na\nb", output: 'Sort Output:\n'}
|
|
js> runCommand("sort", opt)
|
|
0
|
|
js> print(opt.output)
|
|
Sort Output:
|
|
a
|
|
b
|
|
c
|
|
js> // Invoke notepad and wait until it exits
|
|
js> runCommand("notepad")
|
|
0
|
|
</pre>
|
|
<hr WIDTH="100%">
|
|
<br><a href="index.html">back to top</a>
|
|
</body>
|
|
</html>
|