Синтаксис Bash: Что такое «<<»? - PullRequest
       24

Синтаксис Bash: Что такое «<<»?

3 голосов
/ 18 декабря 2009

Может ли кто-нибудь объяснить «<<» в следующем коде? </p>

mysql test<<E0Q
Select * from signins

Я бы попытался найти его сам, но символы трудно найти ...

Спасибо, Dan

Ответы [ 5 ]

8 голосов
/ 18 декабря 2009

Это «здесь файл», см. http://www.linuxjournal.com/article/3771

3 голосов
/ 18 декабря 2009

Это не только используется для трубопровода, хотя. Например, сценарии, используемые в пошаговых руководствах Linux From Scratch, широко используют heredocs в сочетании с командой cat и оператором перенаправления вывода (>). Вот пример такой вещи:

user@domain ~$ cat >test.c <<EOF
int main(void){return 0;}
EOF
user@domain ~$

При этом весь текст между начальным разделителем EOF и конечным разделителем EOF записывается в файл `test.c ', и как только конечный разделитель EOF встречается, вы возвращаетесь в приглашение оболочки.

3 голосов
/ 18 декабря 2009

Здесь документы , или способ простой передачи больших текстовых блоков в программу.

2 голосов
/ 18 декабря 2009

Они называются здесь документами. Из руководства:

Здесь документы

This type of redirection instructs the shell to read input from the
current source until a line containing only word (with no trailing blanks)  is
seen.   All  of  the lines read up to that point are then used as the standard
input for a command.

The format of here-documents is:

       <<[-]word
               here-document
       delimiter
0 голосов
/ 18 декабря 2009

Если вы, например, перенаправите echo в read, назначение переменной будет «потеряно», поскольку чтение выполняется в подоболочке. Вы можете использовать here-doc или here-строку, чтобы он выполнялся в текущей оболочке:

read -a var <<< "some text"

Это пример другой конструкции, которую вы можете увидеть, называемой здесь-строкой, которая похожа на здесь-документ.

См. это и это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...