Я пишу сценарий Bash и пытаюсь распечатать несколько строк вывода и распечатать их в файл. Вот то, что я пробовал до сих пор, это всего лишь пример, но очень похоже на то, что я пытаюсь выполнить.
Я пытаюсь распечатать «Hello World» в hello.txt каждые 2секунд и сможете видеть hello.txt обновленным каждые 2 секунды. Я бы сделал это, запустив tail -f hello.txt. Вот что я пробовал до сих пор.
echo "Hello" >> hello.txt
echo "World" >> hello.txt
Но мне нужно будет запускать ">> hello.txt" после каждой строки в моем цикле. Итак, я научился запускать следующее для вывода блока текста в файл
cat >> hello.txt << EOL
echo "Hello"
echo "World"
EOL
Затем я применил цикл while.
while true
do
echo >> hello.txt << EOL
echo "Hello"
echo "World"
EOL
sleep 2
done
Но затем я получил следующую ошибку.
./test.sh: line 10: warning: here-document at line 7 delimited by end-of-file (wanted `EOL')
./test.sh: line 11: syntax error: unexpected end of file
Затем я попытался поместить вывод файла вне цикла while
echo >> hello.txt << EOL
while true
do
echo "Hello"
echo "World"
sleep 2
done
EOL
Но это распечатало фактический код, а не то, для чего он был предназначен. Как можно распечатать несколько строк в цикле в текстовый файл без необходимости писать «>> hello.txt» после каждой строки?