Как JVM анализирует аргументы командной строки? - PullRequest
0 голосов
/ 25 августа 2018

Может ли кто-нибудь объяснить мне, как именно JVM анализирует строку / аргументы из командной строки и создает из нее массив String (String [] args)?Если возможно, я бы хотел увидеть код.

Допустим, у меня есть скомпилированная Java-программа, которая принимает данные из командной строки:

$ java Test Hi, now you "parse me" ""plea"se

Она создаетмассив с такими значениями:

 args[0] = Hi,
 args[1] = now
 args[2] = you
 args[3] = parse me
 args[4] = please

Я предполагаю, что текст из командной строки передается в виде String в JVM, затем JVM разбивает строку в соответствии с некоторыми правилами и создает из нее массив String [].

По наблюдениям, я вижу это так:

Он разделяет всю входную строку из командной строки разделителем пробела, если пробел не находится между парой двойных кавычек ".Двойные кавычки " и \ рассматриваются как специальные символы так же, как bash, и делают с ними точно так же, как и bash.Таким образом, всякий раз, когда он находит ", он пытается сопоставить его с другим ", и все, что находится между парой двойных кавычек, считается одной строкой, если оно не экранировано \.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...