首页 > 解决方案 > bash - 嵌套的 EOF

问题描述

我正在尝试使用

cat - << EOF > file.sh

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

cat - << EOF > file1.sh
echo first
cat - << EOF > file2.sh
echo second
EOF
echo again first
EOF

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

标签: bashshellheredoc

解决方案


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

cat - << REALEND > file1.sh
echo first
cat - << EOF > file2.sh
echo second
EOF
echo again first
REALEND

结果在此内容中file1.sh

echo first
cat - << EOF > file2.sh
echo second
EOF
echo again first

推荐阅读