Ошибки «Оператор "<" зарезервирован для использования в будущем» и «The '<' operator is reserved for future use.» (РЕШЕНО)


Аналог "<" для PowerShell

В Linux можно использовать следующую конструкцию:

КОМАНДА1 < ФАЙЛ1

В этом случае КОМАНДА1 будет выполнена с ФАЙЛ1 в качестве источника ввода вместо клавиатуры, которая является обычным источником стандартного ввода.

Оператор < соответствует использованию | для передачи в программу стандартного ввода. Например, следующие команды являются идентичными:

КОМАНДА1 < ФАЙЛ1
cat ФАЙЛ1 | КОМАНДА1

Попытка использовать этой конструкции в PowerShell вызывает ошибку.

Например команда

mysql -uroot < C:\Users\MiAl\Downloads\all-databases.sql

завершиться следующим сообщением:

ParserError:
Line |
   1 |  mysql -uroot < C:\Users\MiAl\Downloads\all-databases.sql
     |               ~
     | The '<' operator is reserved for future use.

Аналогичная ошибка в PowerShell 5 (на русском):

строка:1 знак:14
+ mysql -uroot < C:\Users\MiAl\Downloads\all-databases.sql
+              ~
Оператор "<" зарезервирован для использования в будущем.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported

Вместо синтаксиса

КОМАНДА1 < ФАЙЛ1

нужно использовать следующую конструкцию:


Get-Content ФАЙЛ1 | КОМАНДА1


Командлет Get-Content прочитает содержимое ФАЙЛА1. Символ «|» (труба, конвейер) означает передать содержимое КОМАНДЕ1.

Таким образом, вместо

mysql -uroot < C:\Users\MiAl\Downloads\all-databases.sql

нужно использовать следующую команду:

Get-Content C:\Users\MiAl\Downloads\all-databases.sql | .\mysql -uroot

Смотрите также: Как в PowerShell прочитать содержимое файла (аналог cat)

Аналог «./program < input.txt > output.txt» для PowerShell

Рассмотрим конструкцию

./program < input.txt > output.txt

Она означает, что содержимое файла input.txt передаётся на стандартный ввод команды program, а результат выполнения program сохраняется в файл output.txt. Но показанная выше команда не будет работать.

Аналогом рассмотренной конструкции, который будет работать в PowerShell, является следующая команда:

Get-Content INPUT.txt | ./program > output.txt

Либо можно использовать вариант в стиле PowerShell:

Get-Content INPUT.txt | ./program | Out-File output.txt

Смотрите также: Как в PowerShell сохранить вывод в файл (аналоги > и »)


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *