Estou tentando aprender sobre aqui-docs e aqui-strings. Eu gostaria de entender porque a saída de echo <<< more than one word
omite a primeira palavra. Por exemplo.
> echo <<< more than one word
than one word
> echo <<< a b c
b c
>echo <<< "more than one word"
-- <blank line> --
O mesmo comportamento não é verdadeiro cat
:
>cat <<< "more than one word"
more than one word
O que pesquisei :
A Wikipedia Aqui documento artigo. Francamente, tenho a tendência de encontrar muitos artigos da Wikipédia abstrusos, incluindo os notados; Além disso, seus exemplos não abordaram esse problema específico.
Minha distro :
>cat /proc/version
Linux version 3.11.10-301.fc20.x86_64 ([email protected]) (gcc version 4.8.2 20131017 (Red Hat 4.8.2-1) (GCC) ) #1 SMP Thu Dec 5 14:01:17 UTC 2013
Também não consegui encontrar uma pergunta existente no Superusuário sobre esse tópico específico.
Respostas:
<<<
alimenta o comando da mão esquerdastdin
com a contraparte direita.Isso tem um significado para o
cat
comando, que imprime suastdin
quando nenhum nome de arquivo é dado como argumento. Mas isso não tem significado paraecho
que sempre ignora suastdin
e só imprime seus argumentos.fonte
Eu li esta outra resposta algumas vezes e não ficou claro para mim, até que percebi que
<<<
vê apenasa
no seu lado direito e envia para o comandostdin
. Isso significaé equivalente a
ou até mesmo
Ou seja
b
ec
são argumentos paraecho
mesmo se eles estão depois<<< a
(compare a equivalência decat -n < foo.txt
,cat < foo.txt -n
,< foo.txt cat -n
).Agora a afirmação
cumpre a explicação.
fonte
Boa resposta aqui
A string que você está digitando após o & lt; & lt; & lt; ' é um delimitador de texto. Você está usando três '& lt;' em vez de 2, o que pode estar causando o comportamento interessante que você está observando. Se você usar o comando cat em vez de echo, o comportamento será mais o que você espera.
Basicamente, as palavras 'mais' e 'a' estão sendo usadas como sinalizadores para identificar quando a sequência de múltiplas linhas foi finalizada.
fonte
<<<
sintaxe) e pura aqui documento (<<
). Delimitador de texto que você menciona é uma parte do aqui documento sintaxe, não se aplica ao caso em questão.