Что означает 1 доллар в JAVA? - PullRequest
1 голос
/ 22 августа 2010

Вот скрипт оболочки:

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 ??

Ответы [ 3 ]

8 голосов
/ 22 августа 2010

Это не Java, это язык сценариев оболочки.$1 - это первый аргумент, указанный в командной строке.Он говорит сценарию передать первый аргумент командной строки, который вы передали java.exe.Это, в свою очередь, с первым аргументом в вашем вызове main ().

Если ваш main выглядел следующим образом, а значение, которое вы указали, было "foo", выводом будет "foo":

public static void main(String [] args)
{
    for (String arg : args)
    {
        System.out.println(arg);
    }
}
2 голосов
/ 22 августа 2010

$1 в сценариях оболочки означает «аргумент № 1, переданный в этот сценарий оболочки».

Например, если у вас есть сценарий оболочки с именем «foo.sh» со следующим содержимым:

#!/bin/sh
echo "$1"

и вы вызвали его с помощью ./foo.sh hello world, тогда hello - это первый аргумент, переданный сценарию, и команда echo "hello" будет выполнена и выведет hello на экран.

0 голосов
/ 22 августа 2010

Просто для любопытства, вот вся среда кода для сценария оболочки, называемая server.sh:

http://sourceforge.net/projects/charliebot/

Более подробную информацию можно найти здесь:

# http://www.alicebot.org/resources/programd/readme.html
# http://www.noendpress.com/caleb/ALICE101_MacOSX/
...