Wie kann ich in einem Bash-Skript große Mengen an Inhalt wiedergeben?

Wie kann ich in einem Bash-Skript große Mengen an Inhalt wiedergeben?

ich möchte zu tun

echo "[this thing]"

Dieses Ding ist

\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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Wie können Sie einen so großen Inhalt in einer Bash-Datei gut wiedergeben?

Antwort1

Benutze einenhier Dokument:

cat <<'EOF'
Data...
EOF

Hinweis: Es ist besser, das Heredoc-Wort ( EOF) wie oben in Anführungszeichen zu setzen, um eine Erweiterung zu vermeiden, wenn die Daten etwas wie $foooder Backslashs enthalten, es sei denn, Sie möchten natürlich eine Erweiterung. Beispiele:

$ cat <<EOF
$SHLVL \\
EOF

gibt so etwas aus wie:

3 \

während

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

gibt:

$SHLVL \\

Antwort2

Die Antwort von @vinc17 ist korrekt, aber unvollständig. Der HEREDOC-Ansatz ist großartig, kann aber nicht naiv verwendet werden. Siehehttps://stackoverflow.com/a/11379627/763269für weitere Dinge, die Sie beachten sollten.

Eingebettete Leerzeichen und Tabulatoren bleiben in einem HEREDOC-Block nicht erhalten, wie man meinen würde. Der HEREDOC-Marker (normalerweise EOF) sollte in einfache Anführungszeichen gesetzt werden, um eine Shell-Erweiterung zu verhindern. Ein HEREDOC-Block, der einen anderen HEREDOC-Block enthält (z. B. wenn Sie ein Skript generieren), weist viele Probleme auf. Alle diese Probleme können vermieden werden, indem der Inhalt des HEREDOC-Blocks base64-kodiert und erweitert wird.

Antwort3

Mein Latex ist nicht so gut. Setzt du irgendwelche Variablen im Text? Ansonsten würde ich das Latex in eine extra Template-Datei packen und es einfach mit cat ausdrucken. Das würde es wartungsfreundlicher machen, falls du das Template eines Tages ersetzen möchtest.

verwandte Informationen