bash - 嵌套的 EOF

Kin*_*nst 3 bash shell heredoc

我正在尝试使用创建文件

cat - << EOF > file.sh
Run Code Online (Sandbox Code Playgroud)

但是在这里面,我想再写一个EOF。这很难解释,所以这里有一个例子:

cat - << EOF > file1.sh
echo first
cat - << EOF > file2.sh
echo second
EOF
echo again first
EOF
Run Code Online (Sandbox Code Playgroud)

但是当然,在第 5 行它会中断。它不会使用第 2-6 行的内容创建 file1.sh,而是使用第 2-4 行的内容创建。

rob*_*emb 7

只需在外层 cat 上使用不同的分隔符,“EOF”对外壳没有任何特殊之处:

cat - << REALEND > file1.sh
echo first
cat - << EOF > file2.sh
echo second
EOF
echo again first
REALEND
Run Code Online (Sandbox Code Playgroud)

结果在这个内容 file1.sh

echo first
cat - << EOF > file2.sh
echo second
EOF
echo again first
Run Code Online (Sandbox Code Playgroud)