'<' 연산자는 향후 사용을 위해 예약되어 있습니다.
PowerShell을 사용하고 있으며 다음 명령을 실행하려고 합니다.
.\test_cfdp.exe < test.full | tee test.log
test.full은 test_cfdp.exe에 대한 명령줄 입력을 모방하는 스크립트입니다.다만, 다음의 에러가 표시됩니다.
The '<' operator is reserved for future use.
이 명령어를 PowerShell에서 동작시키기 위해 사용할 수 있는 다른 방법(cmdlet 등)이 있습니까?
PowerShell v1에서는 지원되지 않습니다.[v5에서는 아직 지원되지 않습니다...]
회피책의 예는 다음과 같습니다.
Get-Content test.full | .\test_cfdp.exe | tee test.log
또, 다음의 조작도 시험해 주세요.
cmd /c '.\test_cfdp.exe < test.full | tee test.log'
PowerShell 버전 7에서는 Get-Content를 사용하여 지정된 위치에 있는 항목의 내용을 가져와야 합니다.예를 들어 파일을 Python 스크립트에 로드하고 결과를 파일에 쓰려는 경우.다음 구성 사용:
PS > Get-Content input.txt | python .\skript.py > output.txt
또는 파일에 표시 및 저장:
PS > Get-Content input.txt | python .\skript.py | tee output.txt
또는 cmd로 전환하여 '<' 연산자를 사용합니다.
C:\>python .\skript.py < input.txt > output.txt
Windows 상에서 개발하여 Linux 상에서 전개하기 때문에 이 powershell 함수를 만들었습니다.위의 솔루션은 바이너리 파일을 복원해야 했기 때문에 적절하지 않습니다.bash-script의 지식은 다음에서 차용됩니다.bash를 호출하고 새 셸 내에서 명령을 실행한 다음 사용자에게 제어권을 반환하려면 어떻게 해야 합니까?
$globalOS = "linux" #windows #linux
function ExecuteCommand($command) {
if($command -like '*<*') {
#Workaround for < in Powershell. That is reserved 'for future use'
if ($globalOS -eq "windows") {
& cmd.exe /c $command
} else {
$wrappercommand = "''" + $command + " ; bash''"
& bash -c $wrappercommand
}
} else {
Invoke-Expression $command
}
}
$command = "docker exec -i mydockerdb pg_restore -U postgres -v -d mydatabase < download.dump"
ExecuteCommand($command)
이 명령을 더 많이 실행하려면 원래 구문을 사용하여 *.bat 파일을 만들면 됩니다.그건 또 다른 해결책이에요.
PowerShell이 필수 사항이 아닌 경우 명령 프롬프트에서 명령을 실행하면 정상적으로 작동합니다.
언급URL : https://stackoverflow.com/questions/2148746/the-operator-is-reserved-for-future-use
'IT' 카테고리의 다른 글
T-SQL: 문자열 연결과 반대 - 문자열을 여러 레코드로 분할하는 방법 (0) | 2023.04.13 |
---|---|
C# 프로그램을 50밀리초 동안 sleep 상태로 만들려면 어떻게 해야 하나요? (0) | 2023.04.08 |
특정 확장자를 가진 모든 파일을 검색하여 교체하는 PowerShell 스크립트 (0) | 2023.04.08 |
NVARCHAR(MAX)의 최대 문자는 얼마입니까? (0) | 2023.04.08 |
명령줄에서 스크립트를 실행하는 '보안 경고' 무시 (0) | 2023.04.08 |