¿Cómo hago eco de una gran cantidad de contenido en un script bash?

¿Cómo hago eco de una gran cantidad de contenido en un script bash?

me gustaría hacer

echo "[this thing]"

esta cosa es

\documentclass{article}
\usepackage{rotating}
\usepackage{pdfpages}
\usepackage{verbatim}
\usepackage{amsmath, amsfonts, amssymb, textcomp, mathtools, xparse}
\usepackage[T4, OT1]{fontenc}
\usepackage{graphicx}
\graphicspath{{/Users/Masi/Dropbox/Physiology/images/}}
% Animations cannot be included here
% \addmediapath{ {/Users/Masi/Dropbox/Physiology/animations/} }
\usepackage{newunicodechar}
\usepackage{multirow}
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\usepackage{color}
\usepackage{hyperref}
\usepackage{media9} % animations swf
\usepackage{Tabbing}
\usepackage{doi, natbib}
\hypersetup{
colorlinks=true,
linkcolor=blue,
citecolor=blue,
allcolors=blue
}
\usepackage[affil-it]{authblk}
\usepackage{import}
\usepackage{color}
\usepackage[normalem]{ulem}
\usepackage{titling} % Two titles in one document
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}


%%%%%%%%%%%%%%%%%%%%%%%%%%% Question and Answer %%%%%%%%%%%%%%%%%

\usepackage[framemethod=tikz]{mdframed}

\mdfdefinestyle{ans}{
  linecolor=cyan,
  backgroundcolor=yellow!20,
    frametitlebackgroundcolor=green!40,
    frametitlerule=true
}
\newcounter{question}[section]%
\setcounter{question}{0}

\newenvironment{question}[1]{%
\refstepcounter{question}%
    \begin{mdframed}[style=ans,frametitle={Question: #1}]
}{%
    \end{mdframed}%
}%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%% Smaller things

\newtheorem{case}{Case logic}
\mdfdefinestyle{que}{
  linecolor=cyan,
  backgroundcolor=cyan!20,
}
\surroundwithmdframed[style=que]{case}

\newtheorem{sidenote}{Sidenote}
\mdfdefinestyle{que}{
  linecolor=cyan,
  backgroundcolor=cyan!20,
}
\surroundwithmdframed[style=que]{sidenote}


\newtheorem{citation}{Citation}
\mdfdefinestyle{que}{
  linecolor=cyan,
  backgroundcolor=yellow!20,
}
\surroundwithmdframed[style=que]{citation}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




\newtheorem{theorem}{Theorem}
\newtheorem{proposition}[theorem]{Proposition}
\newenvironment{definition}[1][Definition]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}] \emph}{\end{trivlist}}
\providecommand{\keywords}[1]{\textbf{Keywords:} #1}


%%%%%%%%%%%%%%%%%%%%%%%%% Counter Section %%%%%%%%%%%%%%%%%%%%%%
\makeatletter
  \def\@part[#1]#2{%
    \ifnum \c@secnumdepth >\m@ne
      \refstepcounter{part}%
    \fi
    \addcontentsline{toc}{part}{#1}%
    {\parindent \z@ \raggedright
     \interlinepenalty \@M
     \normalfont
     \LARGE \bfseries #2%
     \markboth{}{}\par}%
    \nobreak
    \vskip 3ex
    \@afterheading}
\@addtoreset{section}{part}    
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

¿Cómo puedes hacer eco de un contenido tan grande en un archivo Bash?

Respuesta1

Usar unaaquí documento:

cat <<'EOF'
Data...
EOF

Nota: es mejor citar la palabra heredoc ( EOF) como se indicó anteriormente para evitar la expansión si los datos contienen algo como $foobarras invertidas, a menos que desee la expansión, por supuesto. Ejemplos:

$ cat <<EOF
$SHLVL \\
EOF

da algo como:

3 \

mientras

$ cat <<'EOF'
$SHLVL \\
EOF

da:

$SHLVL \\

Respuesta2

La respuesta de @ vinc17 es correcta pero incompleta. El enfoque HEREDOC es excelente pero no se puede utilizar de manera ingenua. Verhttps://stackoverflow.com/a/11379627/763269para más cosas de las que estar consciente.

Los espacios y pestañas incrustados no se conservan como se podría pensar en un bloque HEREDOC. El marcador HEREDOC (normalmente EOF) debe estar entre comillas simples para evitar la expansión del shell. Un bloque HEREDOC que contiene otro bloque HEREDOC (es decir, si está generando un script) tiene muchos problemas. Todos estos problemas se pueden evitar codificando en base64 el contenido del bloque HEREDOC y expandiéndolo.

Respuesta3

Mi látex no es tan bueno, ¿estableces alguna variable en el texto? De lo contrario, pondría el látex en un archivo de plantilla adicional y simplemente usaría cat para imprimirlo. Esto lo haría más fácil de mantener en caso de que desee reemplazar la plantilla algún día.

información relacionada