PHP get_headers не работает на https://www.ticketmaster.com

Причина поведения UNIX shell=True связана с цитированием. Когда мы пишем команду оболочки, она будет разбита на пробелы, поэтому мы должны привести некоторые аргументы:

cp "My File" "New Location"

Это приводит к проблемам, когда наши аргументы содержат кавычки, которые требует ускорения:

grep -r "\"hello\"" .

Иногда мы можем получить ужасные ситуации , где \ тоже нужно сбежать!

Конечно, реальная проблема в том, что мы пытаемся использовать строку one для указания строк multiple . При вызове системных команд большинство языков программирования избегают этого, позволяя нам в первую очередь отправлять несколько строк, следовательно:

Popen(['cp', 'My File', 'New Location'])
Popen(['grep', '-r', '"hello"'])

Иногда бывает неплохо запускать «необработанные» команды оболочки; например, если мы скопируем что-то из сценария оболочки или веб-сайта, и мы не хотим конвертировать все ужасное экранирование вручную. Вот почему существует опция shell=True:

Popen(['cp "My File" "New Location"'], shell=True)
Popen(['grep -r "\"hello\"" .'], shell=True)

Я не знаком с Windows, поэтому я не знаю, как и почему она ведет себя по-другому.

0
задан xgretsch 19 March 2019 в 12:38
поделиться