Bash 스크립트에 많은 양의 콘텐츠를 에코하는 방법은 무엇입니까?

Bash 스크립트에 많은 양의 콘텐츠를 에코하는 방법은 무엇입니까?

나하고 싶어

echo "[this thing]"

이건

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

Bash 파일에서 이렇게 큰 내용을 어떻게 멋지게 에코할 수 있나요?

답변1

사용하다여기 문서:

cat <<'EOF'
Data...
EOF

EOF참고: 데이터에 백슬래시 같은 것이 포함되어 있는 경우 확장을 $foo원하지 않는 한 확장을 방지하기 위해 위의 구분 기호( )를 인용하는 것이 가장 좋습니다. 예:

$ cat <<EOF
$SHLVL \\
EOF

다음과 같은 것을 제공합니다:

3 \

하지만

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

다음을 제공합니다:

$SHLVL \\

답변2

@vinc17의 답변은 정확하지만 불완전합니다. HEREDOC 방법은 훌륭하지만 순진하게 사용해서는 안 됩니다. 바라보다https://stackoverflow.com/a/11379627/763269주의해야 할 사항에 대해 자세히 알아보세요.

HEREDOC 블록에서 상상할 수 있는 것처럼 포함된 공백과 탭은 유지되지 않습니다. HEREDOC 태그는 EOF쉘 확장을 방지하기 위해 (일반적으로) 작은따옴표로 묶어야 합니다. 다른 HEREDOC 블록을 포함하는 HEREDOC 블록에는 많은 문제가 있습니다(즉, 스크립트를 생성하는 경우). HEREDOC 블록의 내용을 Base64로 인코딩하고 확장하면 이러한 모든 문제를 피할 수 있습니다.

답변3

내 라텍스가 별로 좋지 않은데, 텍스트에 변수를 설정했나요? 그렇지 않으면 라텍스를 추가 템플릿 파일에 넣고 cat을 사용하여 인쇄합니다. 이렇게 하면 언젠가 템플릿을 교체하려는 경우 유지 관리가 더 쉬워집니다.

관련 정보