Передача аргумента списка без кавычек в скрипт - PullRequest
0 голосов
/ 20 февраля 2019

Сценарий Python обрабатывает каждый переданный ему аргумент командной строки как строку.В идеале мы должны использовать какой-то стандартный синтаксический анализатор для разбора аргументов командной строки, но я пытался sys.argv

Если мы используем sys.argv для разбора следующих аргументов:

/usr/local/bin/somemodule 1.2.3.4 11.22.33.44 111.222.333.444 1.2.3.4 [1.2.3.4,1.2.3.4] [sub.domain.com,sub2.domain.com,sub3.domain.com] somestring

Когда я печатаю sys.argv[1:] Я получаю список ниже с одним дополнительным аргументом

['1.2.3.4', '11.22.33.44', '111.222.333.444', '1.2.3.4', '1', '1', '2', 'somestring'

Это поведение не соответствует.Есть идеи, почему список конвертируется в '1'?

1 Ответ

0 голосов
/ 20 февраля 2019

Без кавычек [string] - это подстановочный знак оболочки, который соответствует файлам с именами s или t или r или i или n или g.

Видимоу вас есть файл с именем 1 в текущем каталоге, и реальный подстановочный знак, который вы пытались использовать, соответствовал ему.

Это может быть сложно диагностировать или воспроизвести из-за оболочки (в конфигурации по умолчанию на большинстве платформ)будет проходить через подстановочный знак дословно, если нет подходящих файлов.

Урок состоит в том, чтобы в основном всегда заключать в кавычки выражения оболочки, содержащие нетривиальные строки.

...