bash에서는 OK, sh에서는 OK가 아님 - diff < (ls)

bash에서는 OK, sh에서는 OK가 아님 - diff < (ls)

GNU Bash에서는 diff <(df) <(ls)실행 중입니다.
에서는 sh그렇지 않습니다.
나도 시도했지만 [[diff </bin/df <bin/ls]]여전히 오류가 발생했습니다.

$ [[/usr/bin/diff < (/bin/ls) < (bin/df)]]
sh: 1: Syntax error: "(" unexpected
$ bash

누구든지 sh? 도움을 주셔서 정말 감사드립니다.

답변1

대체 항목 과 직접적으로 동등한 항목은 없습니다 <(…) >(…). 대체 항목으로 명명된 파이프를 수동으로 만들어야 합니다.

mkfifo /tmp/lspipe
mkfifo /tmp/dfpipe
/bin/ls > /tmp/lspipe &
/bin/df > /tmp/dfpipe &
/usr/bin/diff /tmp/lspipe /tmp/dfpipe
rm /tmp/lspipe /tmp/dfpipe

(또한 Bash에는 다음이 있습니다.아니요<와 사이에 공백이 있습니다 (…).)

[[…]]이 맥락에서는 전혀 의미가 없습니다 . 명령을 그룹화하기 위한 것이 아니라 조건식을 작성하기 위한 것입니다( 그룹 명령과 혼동하지 마십시오) ( ). { }Bash 전용 기능이기도 하지만 올바르게 사용되는 경우에는 [ … ]또는 로 대체할 수 있습니다 expr.

관련 정보