Как я могу записать текст в файл в bash, сохранив его предыдущее содержимое? [дубликат]

Я пытался создать сценарий оболочки Bash, который бы создавал и изменял файл с именем list . По сути, моя цель с программой - добавить имена к list, создав файл с заголовком (при необходимости).

Однако в настоящее время сценарий не работает в одной конкретной точке: всякий раз, когда я снова запускаю сценарий, старое имя исчезает и заменяется только что введенным именем. Как могу я решить эту проблему?

Мой сценарий:

#!/bin/bash
#Please sign your name here.

echo "Hi, what's your name?"
read name
echo "Hi $name, welcome to the Linux course!"

echo Course Attendees > list
echo $name >> list

Пример проблемы:

$ bash list.sh
Hi, what's your name?
Test
Hi Test, welcome to the Linux course!

$ cat list
Course Attendees
Test

$ bash list.sh
Hi, what's your name?
Test2
Hi Test, welcome to the Linux course!

$ cat list
Course Attendees
Test2
2
задан 31 December 2016 в 00:05

1 ответ

В Bash существует два способа записать в файл (технически, существует намного больше, но во всех отношениях для этого ответа, существует два):

Прежде всего > оператор, поскольку Вы используете в этой строке:

echo Course Attendees > list

> оператор будет перезапись что-либо существующее в файле с новым содержанием файла. В действительности это удаляет файл и создает новый с тем же именем.

, Во-вторых, >> оператор, как используется здесь:

echo $name >> list

Это будет добавлять строки в существующий файл или создавать новый, если он не будет существовать.

, Когда Вы запускаете свой скрипт, Вы всегда перезаписываете свой список курса с "заголовком" Посетителей Курса, вызывая эту ошибку. Измените свою программу, чтобы только добавить строки, если "заголовок" Посетителей Курса присутствует. Мое персональное предложение состояло бы в том, чтобы проверить, существует ли файл. Если это делает, используйте только добавлять операцию. Иначе дайте ему заголовок и создайте его.

Или, более изящно, только выполненный echo Course Attendees > list, если файл не существует. См. это, ТАК ответьте за большее количество информации относительно как для осуществления проверки как это.

4
ответ дан 2 December 2019 в 02:16

Другие вопросы по тегам:

Похожие вопросы: