这是一个shell脚本:
echo Starting Jarvis Program D.
ALICE_HOME=.
SERVLET_LIB=lib/servlet.jar
ALICE_LIB=lib/aliceserver.jar
JS_LIB=lib/js.jar
# Set SQL_LIB to the location of your database driver.
SQL_LIB=lib/mysql_comp.jar
# These are for Jetty; you will want to change these if you are using a different http server.
HTTP_SERVER_LIBS=lib/org.mortbay.jetty.jar
PROGRAMD_CLASSPATH=$SERVLET_LIB:$ALICE_LIB:$JS_LIB:$SQL_LIB:$HTTP_SERVER_LIBS
java -classpath $PROGRAMD_CLASSPATH -Xms64m -Xmx128m org.alicebot.server.net.AliceServer $1
在最后一行:$ 1是什么意思?
答案 0 :(得分:8)
它不是Java,它是shell脚本语言。 $1
是命令行中提供的第一个参数。它告诉脚本将您提供的第一个命令行参数传递给java.exe。反过来,它是你调用main()的第一个参数。
如果您的main看起来像这样,并且您提供的值是“foo”,则输出将为“foo”:
public static void main(String [] args)
{
for (String arg : args)
{
System.out.println(arg);
}
}
答案 1 :(得分:2)
$1
表示“传递给此shell脚本的参数编号1”。
例如,如果您有一个名为“foo.sh”的shell脚本,则包含以下内容:
#!/bin/sh
echo "$1"
并且您使用./foo.sh hello world
调用它,然后hello
是传递给脚本的第一个参数,将执行echo "hello"
命令并将hello
打印到屏幕上
答案 2 :(得分:0)
只是为了好奇,这里是shell脚本的整个代码环境,名为server.sh:
http://sourceforge.net/projects/charliebot/
可在此处找到更多信息:
# http://www.alicebot.org/resources/programd/readme.html
# http://www.noendpress.com/caleb/ALICE101_MacOSX/