Мне нужно создать текстовый файл (если он еще не существует) и записать новую строку в файл, используя bash.
Я уверен, что это просто, но может ли кто-нибудь мне это объяснить?
Ответы:
Если вы хотите, чтобы это было сценарием, следующий сценарий Bash должен делать то, что вы хотите (плюс сообщать вам, когда файл уже существует):
#!/bin/bash
if [ -e $1 ]; then
echo "File $1 already exists!"
else
echo >> $1
fi
Если вы не хотите, чтобы сообщение «уже существует», вы можете использовать:
#!/bin/bash
if [ ! -e $1 ]; then
echo >> $1
fi
Изменить об использовании:
Сохраните любую версию с именем, которое вам нравится, скажем «create_file» (цитирую мои, вы не хотите, чтобы они были в имени файла). Затем, чтобы сделать файл исполняемым, в командной строке выполните:
chmod u+x create_file
Поместите файл в каталог на своем пути , затем используйте его с:
create_file NAME_OF_NEW_FILE
$ 1 - это специальная переменная оболочки, которая принимает первый аргумент в командной строке после имени программы; т.е. $ 1 подберет NAME_OF_NEW_FILE в приведенном выше примере использования.
Создание текстового файла в unix можно выполнить с помощью текстового редактора (vim, emacs, gedit и т. Д.). Но то, что вы хотите, может быть примерно таким
echo "insert text here" > myfile.txt
Это поместит текст «вставить здесь текст» в файл myfile.txt. Чтобы убедиться, что это сработало, используйте команду «cat».
cat myfile.txt
Если вы хотите добавить в файл, используйте это
echo "append this text" >> myfile.txt
Предполагая, что вы имеете в виду команды оболочки UNIX, просто запустите
echo >> file.txt
echo
печатает новую строку, и >>
командный интерпретатор сообщает оболочке добавить эту новую строку в файл, создавая, если он еще не существует.
Однако, чтобы правильно ответить на вопрос, мне нужно знать, что вы хотели бы, если файл уже существует. Если вы хотите заменить его текущее содержимое, например, новой строкой, вы должны использовать
echo > file.txt
EDIT: и в ответ на комментарий Джастина, если вы хотите добавить новую строку, только если файл еще не существует, вы можете сделать
test -e file.txt || echo > file.txt
По крайней мере, это работает в Bash, я не уверен, работает ли это также и в других оболочках.
#!/bin/bash
file_location=/home/test/$1.json
if [ -e $policy ]; then
echo "File $1.json already exists!"
else
cat > $file_location <<EOF
{
"contact": {
"name": "xyz",
"phonenumber": "xxx-xxx-xxxx"
}
}
EOF
fi
Этот код проверяет, присутствует ли данный файл JSON пользователя в тестовом домашнем каталоге или нет. Если его нет, он создаст его вместе с содержимым. Вы можете изменить расположение файла и его содержимое в соответствии с вашими потребностями.