bash <<< 연산자를 diff와 함께 사용하는 방법은 무엇입니까?

bash <<< 연산자를 diff와 함께 사용하는 방법은 무엇입니까?

참고:

$ diff <(echo a) <<<b
diff: missing operand after '/dev/fd/63'
diff: Try 'diff --help' for more information.

나는 <(...)이것이 잘 작동한다는 것을 알고 있습니다.

$ diff <(echo a) <(echo b)
1c1
< a
---
> b

나는 또한 <<<이것이 일반적으로 잘 작동한다는 것을 알고 있습니다.

$ cat <<<a
a

그렇다면 그것을 호출하는 올바른 방법은 무엇입니까 diff?

답변1

diff명령은파일 이름매개변수와 여기에 있는 문자열이 <<<표준 입력에 기록됩니다. 하지만 그것은 man diff우리에게 말한다.

FILE이 "-"이면 표준 입력을 읽습니다.

그래서

$ diff <(echo a) - <<<b
1c1
< a
---
> b

여기에도 동일하게 적용됩니다.문서:

$ diff <(echo a) - << \EOF
b
EOF
1c1
< a
---
> b

답변2

장치가 있는 시스템 에서는 /dev/fd/x다음을 수행할 수 있습니다.

diff /dev/fd/3 3<< EOF3 /dev/fd/4 4<< EOF4
some text
EOF3
some other text
EOF4

Bourne 쉘의 <<여기 문서 리디렉션 연산자를 사용하십시오.

diff /dev/fd/3 3<<< 'some text' /dev/fd/4 4<<< 'some other text'

zsh의 <<<here 문자열 리디렉션 연산자를 사용하십시오.

zsh에서는 다음을 수행할 수도 있습니다.

diff <(<<<'some text') <(<<<'some other text')

답변3

<()다음 을 결합 할 수 있습니다 cat <<<.

diff <(echo a) <(cat <<<b)

Steeldriver의 답변은 하나의 매개변수 만 사용해야 하는 경우 작동 <<<하지만 두 매개변수를 모두 사용해야 하는 경우에는 다음과 같이 작동합니다.

diff <(cat <<<a) <(cat <<<b)

그러나 here-string이 필요한 이유는 명확하지 않습니다. <(cat <<<a)사이에는 큰 차이가 없습니다.<(echo a)

관련 정보