it-source

Bash 백스틱과 동일한 배치

criticalcode 2023. 5. 1. 21:27
반응형

Bash 백스틱과 동일한 배치

Bash로 작업할 때 다음과 같이 한 명령의 출력을 다른 명령에 넣을 수 있습니다.

my_command `echo Test`

과 같은 것일 것입니다.

my_command Test

(분명히 이것은 비실용적인 예에 불과합니다.)

당신도 배치에서 같은 일을 할 수 있는지 궁금합니다.

에서 cmd.exe 스크립트를 사용하여 유사한 기능을 얻을 수 있습니다.for /f명령:

for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a

네, (적어도) 분명하지 않지만, 그것이 바로 거기에 있는 것입니다.

for /?자세한 내용은

참고 사항:저는 "을 사용할 줄 알았어요.echo뒤통수를 치는 것처럼for /f명령은 "를 사용하여 수행해야 합니다.cmd.exe /c echo Test이후로echo에 대한 내부 명령입니다.cmd.exe더 자연스러운 방식으로 작동합니다.Windows 배치 스크립트는 항상 어떤 식으로든 저를 놀라게 합니다(그러나 일반적으로 좋은 방법은 아닙니다).

먼저 출력을 파일로 리디렉션하여 이 작업을 수행할 수 있습니다.예:

echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%

"for" 명령에 대한 설명서를 읽습니다.for /?

안타깝게도 Windows(윈도우)에 직접 로그인하여 확인하지는 않지만, 다음과 같은 방법을 사용하면 원하는 것에 근접할 수 있습니다.

for /F %i in ('echo Test') do my_command %i

아마도 내가 표준의 구문을 망치는 것 같습니다.for /f방법, 하지만 내가 &&과 |을 포함하는 매우 복잡한 명령을 한계 내에 넣을 때.for /f그것은 문제를 일으킵니다.임의의 복잡성 명령을 처리하려면 일반적인 명령에서 약간 수정할 수 있습니다.

SET VV=some_command -many -arguments && another_command -requiring -the-other -command | handling_of_output | more_handling
for /f "usebackq tokens=*" %%a in (`%VV%`) do mycommand %%a

전체 및 복잡한 명령을 먼저 변수에 넣은 다음 복잡한 명령을 for 루프의 한계에 직접 넣는 대신 변수에 대한 참조를 한계에 넣으면 구문 해석 문제를 피할 수 있습니다.현재 내가 설정한 정확한 명령을 복사하면VV위의 예에서 변수는 사용되는 위치로 이동합니다.%VV%구문 오류를 발생시킵니다.

Windows 내부에서 Bash를 항상 실행할 수 있습니다.저는 항상 MSYS와 함께 합니다(Cygwin보다 훨씬 효율적입니다).

언급URL : https://stackoverflow.com/questions/2768608/batch-equivalent-of-bash-backticks

반응형