Como faço para usar: cat < < EOF [duplicado]

Esta pergunta já tem respostas aqui :

Comentários

  • Da forma como está, o script precisa de uma citação " após Thanks, para encerrar a string.
  • Obrigado Steve pelo feedback, sim, perdi as aspas. Você pode me orientar um pouco sobre cat < < Adição EOF ao meu script?
  • O << EOF thingy é chamado de " aqui documento ". Veja aqui , aqui e aqui . Eu ' não tenho certeza do que você está perguntando sobre essas duas dúzias de linhas de script de shell, então posso ' não comentar sobre isso.
  • Se você ' for apontar referências às pessoas, indique-lhes este aqui .

Resposta

O << é o heredoc. Qualquer coisa que siga o << atua como o delimitador para o heredoc

cat <<EOF This is first line So, this is 2nd Again, another line EOF 

Enter

Então, se você gostaria de armazenar as três linhas em uma variável, faça como a seguir:

a partir da linha de comando

$ var="$(cat <<EOF > Bingo > Gotcha > Enough > EOF > )" 

Digite

$ echo "$var" #double quotes are important Bingo Gotcha Enough 

de dentro do script

#!/bin/bash var="$(cat <<EOF Bingo Gotcha Enough EOF )" echo "$var" 

Comentários

  • para que eu possa fazer DU_RESULTS_HOME = " $ (cat < < EOF sudo -u hdfs hadoop fs -du -s / user / * | sort -r -k 1 -g | awk ' {sufixo = " KMGT "; para (i = 0; $ 1 > 1024 & & i < comprimento (sufixo); i ++) $ 1 / = 1024; imprimir int ($ 1) substr (sufixo, i, 1), $ 3; } ' | head -n 22 | awk ' {print $ 1 " \ t \ t \ t " $ 2} ') sudo -u hdfs hadoop fs -df -h / usuário EOF) "
  • << destina-se a strings como eu ' já demonstrei, não comandos. Você deseja executar os comandos altos e armazenar os resultados em DU_RESULTS_HOME?
  • não, então em meu script estou usando muitas variáveis, então estou tentando para aprender a técnica cat < < eof para reduzir o número de variáveis .. e provavelmente evitar o uso do formato de impressão, que é printf '% s \ n \ n \ n \ n% s \ n \ n% s \ n% s \ n \ n \ n \ n \ n \ n% s \ n% s \ n % s ' " $ MESSAGE_BODY " " $ DF_RESULTS_HOME " " $ DU_RESULTS_HEADER_USER " " $ DU_RESULTS_HOME " | / bin / mail -s " $ MESSAGE_SUBJECT " -r " $ MESSAGE_SENDER " " $ MESSAGE_EMAIL "

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *