<<<은 무슨 뜻인가요? [복사]

<<<은 무슨 뜻인가요? [복사]

<<< 무슨 뜻인가요? 예는 다음과 같습니다.

$ 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

문자열이 확장되어 표준 입력의 명령에 제공됩니다.

귀하의 예에서 문자열은 aaastdin을 통해 sed 명령에 입력됩니다.

관련 정보