Как ввести звездочку в командную строку, чтобы он понял? - PullRequest
0 голосов
/ 03 марта 2011

Я использую php для получения строки, например: '3 * 2', и вызываю java (через exec ()), чтобы вычислить это, но даже когда я заменяю '*' на '\ *' или нет, это все еще не сработало.Когда я передаю эти аргументы в командную строку, он работает для '\ *', а не для '*'.Как я могу ввести звездочку, чтобы командная строка могла понять?Я не хочу менять способ работы моей программы с на st else в java-файле.Я использую Ubuntu.

Ответы [ 2 ]

1 голос
/ 03 марта 2011

вы можете использовать escapeshellarg () в php, чтобы избежать ваших аргументов

0 голосов
/ 03 марта 2011

Это очень запутанный вопрос.Я должен был догадаться, что могут означать такие вещи, как ", передающие эти аргументы с командной строкой ", которые не имеют смысла в том виде, в каком они стоят.Этот ответ основан на угадывании того, каким был бы ваш вопрос на английском языке.

Кажется, что вы можете вызывать вашу программу Java из командной строки, если вы избегаете метасимволов, которые в противном случае оболочка для вас использует.Это нормально и ожидаемо, и каждый, кто использует оболочку для запуска программ с символами, такими как * в их синтаксисах командной строки, должен быть давно знаком.

Ваша настоящая проблема заключается в том, что вы не можетевызовите эту самую Java-программу из скрипта PHP, потому что вы передаете ее '3 * 2' (с кавычками) в качестве единственного аргумента командной строки, предоставленного exec().Опять же, проблема здесь, скорее всего, другая известная.Когда кто-то запускает программу через оболочку с командной строкой 3 \* 2 (без кавычек, обратите внимание), она фактически разделяется оболочкой на три аргумента командной строки: 3, * и 2 которые на самом деле обеспечивает оболочка системному вызову execve().Так вот чего ожидает ваша Java-программа.Вы должны убедиться, что именно так и происходит, когда вы вызываете программу из PHP.

...