![bash에서는 OK, sh에서는 OK가 아님 - diff < (ls)](https://rvso.com/image/1606676/bash%EC%97%90%EC%84%9C%EB%8A%94%20OK%2C%20sh%EC%97%90%EC%84%9C%EB%8A%94%20OK%EA%B0%80%20%EC%95%84%EB%8B%98%20-%20diff%20%3C%20(ls)%20.png)
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
.