O que essa declaração 'cat' faz?

1

Estou tentando descobrir o que esta declaração em um arquivo Bash faz. Eu acho que combina stdout , stderr e a saída para o arquivo $log está apontando para e anexar a string de múltiplas linhas a ele. Está certo?

cat << EOF >> $log 2>&1   
the quick brown  
fox jumps  
EOF 
    
por mikeymike 30.08.2014 / 17:26

1 resposta

7

Primeiro, cat deve ser escrito em minúsculas. Esta declaração de comando usa o conceito de documentos aqui .

A primeira parte cat << EOF significa que stdin (entrada padrão) do comando vem depois. Tudo o que vem depois da primeira linha até que a palavra EOF seja a entrada padrão para o comando cat . Ou da documentação:

This type of redirection instructs the shell to read input from the current source until a line containing only delimiter (in your case it's EOF) (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.

A segunda parte do comando >> $log 2>&1 significa que a saída de stdout e stderr ambos deve ser anexada a um arquivo cujo nome está na variável $log .

Conclusão: agora é gerado um arquivo como este:

the quick brown
fox jumps
    
por 30.08.2014 / 18:07