<<< 무슨 뜻인가요? 예는 다음과 같습니다.
$ sed 's/a/b/g' <<< "aaa"
bbb
더 많은 Linux 명령에 적용되는 범용 명령입니까?
sed
프로그램에 문자열을 공급 하는 것처럼 보이지만 aaa
일반적으로 이 목적으로 << 또는 <가 사용되지 않습니까?
답변1
다른 사람들은 기본적인 질문에 답했습니다: 그것이 무엇입니까? (답변: 이것은여기에 있는 문자열.)
왜 작동하는지 살펴보겠습니다.
다음과 같이 명령의 표준 입력에 문자열을 입력할 수도 있습니다.
echo "$string" | command
그러나 Bash에서 파이프를 도입한다는 것은 개별 명령이 하위 쉘에서 실행된다는 것을 의미합니다. 생각해 보세요:
echo "hello world" | read first second
echo $second $first
두 번째 echo 명령의 출력은 공백 하나만 인쇄합니다. 와? 내 변수는 어떻게 되었나요? 읽기 명령은 파이프에 있으므로 하위 쉘에서 실행됩니다. 표준 입력에서 2개의 단어를 올바르게 읽고 이를 변수에 할당합니다. 그러나 명령이 완료된 후에는서브쉘 종료그리고 변수가 손실됩니다.
때로는 중괄호를 사용하여 이 문제를 해결할 수 있습니다.
echo "hello world" | {
read first second
echo $second $first
}
필요한 값이 포함되어 있지만 스크립트의 현재 셸에서 변수를 여전히 사용할 수 없는 경우에는 괜찮습니다.
이 혼란스러운 상황을 해결하려면 여기에 문자열을 사용하십시오.
read first second <<< "hello world"
echo $second $first
아, 훨씬 나아요!
답변2
<<<
여기서 문자열을 나타냅니다.
$ cat <<< 'hi there'
hi there
오른쪽 단어를 왼쪽 명령의 표준 입력으로 전달합니다.
<<
여기에 문서를 나타냅니다.
$ cat <<EOF
> hi
> there
> EOF
hi
there
EOF
어떤 단어라도 가능합니다.
여기서 문서는 전체 파일을 생성하거나 긴 메시지를 표시하기 위해 쉘 스크립트에서 자주 사용됩니다.
cat > some-file <<FILE
foo
bar
bar bar
foo foo
FILE
<
파일의 내용을 명령의 표준 입력에 전달합니다.
$ cat < /etc/fstab
/dev/sda2 /boot ext4 nosuid,noexec,nodev,rw,noatime,nodiratime 0 2
/dev/sda4 / ext4 rw,noatime,nodiratime, 0 1
/dev/sdb5 /var ext4 nosuid,noexec,nodev,rw,relatime 0 2
...
답변3
보세요배쉬 매뉴얼 페이지. 이 기호는여기에 파일&여기 문자열이 있습니다. 이를 통해 연속 문자열에 여러 줄의 데이터 입력을 생성할 수 있습니다. 귀하가 요청한 변형은 다음과 같습니다.여기에 있는 문자열.
Bash 매뉴얼 페이지에서
Here Strings
A variant of here documents, the format is:
<<<word
The word is expanded and supplied to the command on its standard input.
노트:자세한 내용은 다음 사이트에서도 확인하실 수 있습니다.배쉬 참조 매뉴얼여기서는 어떤 문자열에 대해 설명합니다.
답변4
여기서 의미하는 것은 문자열입니다.
<<< strings
문자열이 확장되어 표준 입력의 명령에 제공됩니다.
귀하의 예에서 문자열은 aaa
stdin을 통해 sed 명령에 입력됩니다.