더 설명하지 않고 command < <(command)
대신 사용하는 것을 권장합니다 . command <<< $(command)
작동하지만 이해가 안 돼요. 누군가 이것에 대해 자세히 설명해 주시겠습니까?
후자의 경우 괄호 안의 (명령)이 서브쉘의 명령을 실행한다고 생각합니다. 표준 출력은 $()로 캡처됩니다. 마지막으로 <<<는 이를 "file here"로 상위 쉘에 있는 명령의 표준 입력으로 리디렉션합니다.
대조적으로, 이전 구성은 첫 번째 파일의 내용을 <
상위 쉘의 표준 입력으로 리디렉션합니다. 괄호는 서브쉘에서 (명령)을 실행합니다. 따라서 "<(명령)"은 서브쉘의 표준 출력을 파일로 저장합니다. 아니면 이것이 어떻게 작동합니까?
답변1
<<<
여기에 문자열이 있습니다. 여기에 있는 문서와 유사합니다. 다음 단어 <<<
와 줄 바꿈이 명령의 표준 입력에 전달됩니다. 구문: ( command <<< "some sentence"
와 유사 echo "some sentence" | command
하지만 서브셸의 오버헤드가 없음)
명령 대체: "$(cmd "foo bar")"
"cmd" 명령이 "foo bar" 인수와 함께 실행되고 "$(..)"
출력으로 대체됩니다. 바라보다http://mywiki.wooledge.org/BashFAQ/002그리고http://mywiki.wooledge.org/CommandSubstitution
절차적 대체: <(command)
or는 or 항목 >(command)
으로 대체됩니다 . 기본적으로 명명된 파이프를 설정하는 약어입니다. 바라보다FIFO
/dev/fd/*
http://mywiki.wooledge.org/ProcessSubstitution예:diff -u <(sort file1) <(sort file2)
command < <(othercommand)
othercommand | command
# 와 같지만서브쉘 없음'주문하다'. 프로세스 대체(<())로 생성된 파일을 리디렉션하려면 파일 리디렉션(<)을 사용합니다. 모호함을 피하기 위해 <와 <(..) 사이의 공백은 중요합니다(구분된 문서입니까 아니면 리디렉션된 PS입니까?).