원하는 예: 여기에 문자열 fd

원하는 예: 여기에 문자열 fd

man bash이 리디렉션 기능을 사용하면: [n]<<<word.이 설명은 다음과 같습니다.

The result is supplied as a single string, with a  newline  appended,
to the command on its standard input (or file descriptor n if n is specified).

작동하도록 노력하고 있지만 실제로 해결책을 찾을 수 없습니다.

$ exec 4>out
$ 4<<<asdfwefwef

이는 의도한 효과가 없는 것 같습니다.

이것이 어떻게 작동하나요?

답변1

어려운 점은 fd4에서 읽는 표준 유틸리티를 찾는 것입니다. 이는 fd4가 다음 문자열을 가져옴을 보여줍니다.

$ ( cat 0<&4 ) 4<<<'Hello, World!'
Hello, World!
$ 

또는 read -ustdin이나 인수를 사용하지 않고 문자열을 스크립트로 밀수할 수 있습니다.

$ read -u 4 FOO 4<<<42 && echo $FOO
42
$ 

실제로 읽은 내용은 스크립트 내부 깊숙이 묻혀 있으며 스크립트는 명령줄에서 fd4 리디렉션을 상속합니다.

$ cat Fd4
#! /bin/bash

#.. Read from stdin
read -r A B C
printf '%s %s %s %s %s\n' $A $B $C $D $E

#.. Read from here string.
read -r -u4 D B E
printf '%s %s %s %s %s\n' $A $B $C $D $E


$ echo stdin gets this | ./Fd4 4<<<'fd4 sees that'
stdin gets this  
stdin sees this fd4 that
$ 

관련 정보