Баш - вложенный EOF - PullRequest
       55

Баш - вложенный EOF

2 голосов
/ 17 октября 2019

Я пытаюсь создать файл, используя

cat - << EOF > file.sh

Но внутри этого я хочу написать еще один EOF. Это трудно объяснить, поэтому вот пример:

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

Но, конечно, в строке 5 он ломается. Он не создает файл file1.sh со строкой содержимого 2-6, но со строкой содержимого 2-4.

1 Ответ

3 голосов
/ 17 октября 2019

Просто используйте другой разделитель для внешнего кота, "EOF" не имеет никакого отношения к оболочке:

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
...