Qual é o fim da string aqui?

0

Pareceu-me que o fim de uma string aqui é newline. Eu percebo que estou errado:

$ cat <<< hello world
cat: world: No such file or directory

O que pode significar o fim de uma string aqui?

    
por Ben 22.11.2018 / 22:28

2 respostas

3

A sintaxe de uma string here é :

<<< word

onde uma palavra é uma sequência de caracteres tratados como uma unidade pelo shell , delimitada por espaço em branco. Pode ser uma única palavra comum ( hello ), uma cadeia com aspas simples ou dupla ( 'hello world' , "hello world" ), um parâmetro ou uma substituição de comando ( $foo , $(...) ), algo montado com barra invertida escapa, ou uma combinação daqueles unidos.

Você pode ter vários aqui-documentos ou aqui-strings em uma única linha, então o final da linha não pode funcionar como o delimitador somente , embora ele acabe lá, se não já ( a menos que a nova linha esteja com escape de barra invertida).

Você teria o efeito que queria com

cat <<<'hello world'

ou

cat <<<hello\ world
    
por 22.11.2018 / 22:36
2

Do manual:

[n]<<<word

O final é uma palavra, não várias palavras. Portanto, neste exemplo, a primeira palavra é hello e termina a sequência aqui. A próxima palavra é world , é apenas um argumento comum para cat e cat assume que é um nome de arquivo para ler.

Você poderia escrevê-lo mais claramente dessa maneira:

$ cat world <<< hello
    
por 22.11.2018 / 22:34