将Cat EOF与for循环一起使用

时间:2018-10-23 22:58:34

标签: bash loops eof cat beamer

我正在尝试编写一个bash脚本,为乳胶投影机提供tex输出。为此,我需要一个接一个地添加多个cat << EOF(或类似的内容)。第一页应该是演示文稿的第一页,因此它位于循环之前。然后有两个嵌套的循环来给出演示文稿的多个页面。最后,有一些行可以总结出乳胶结构,例如\ end {document}等。首页和最后几行并不是那么关键,但是用循环编写幻灯片的主页对我来说至关重要。但是它总是选择循环的最后一个元素。

这是我尝试的简短版本。在原始版本中,数组包含的元素要多于这些元素。

#!/bin/bash                                                                                                                                                                                                 

declare -a arrReg=(CR1 CR2)
declare -a arrVar=(pt_el pt_mu)
declare -a arrVarTitle=("electron $p_T$" "muon $p_T$")

laTeXfile=slides.tex

cat > ${laTeXfile}<<EOF                                                                                                                                                                                     
\documentclass{beamer}                                                                                                                                                                                      
\usepackage{graphicx}                                                                                                                                                      
\usepackage[font=small,labelfont=bf]{caption}                                                                           

\begin{document}                                                                                                                                                                                            

%TITLE PAGE  
<<text here>>                                                                                                                                                                                                                                                                                                                                                
EOF                                                                                                                                                                                                         

for i in "${arrReg[@]}"
do
    cnt=0

    for j in "${arrVar[@]}"
    do

        #var=${j}                                                                                                                                                                                           
        varTitle=${arrVarTitle[cnt]}

        cat >${laTeXfile} <<EOF                                                                                                                                                                             
%---------------SLIDE                                                                                                                                                                                       
\begin{frame}  

<<text here>>
\frametitle{${i}}                                                                                                                                                                                           
\framesubtitle{${varTitle}}                                                                                                                                                                                 

\begin{columns} 
<<text here>>   

\end{columns}                                                                                                                                                                                               
\end{frame}                                                                                                                                                                                                 
EOF                                                                                                                                                                                                         

     (( cnt++ ))
    done                                                                                                                                                                                                
done                                                                                                                                                                               

cat > ${laTeXfile}<<EOF                                                                                                                                                                                    
\end{document}                                                                                                                                                                                             
EOF            

谢谢。

0 个答案:

没有答案