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 -u
stdin이나 인수를 사용하지 않고 문자열을 스크립트로 밀수할 수 있습니다.
$ 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
$