Tworzenie pliku z pewną zawartością w skryptach Shell

20

Jestem trochę nowy w Skrypcie Shell i chcę utworzyć nowy plik w skrypcie i chcę dodać zawartość, a następnie ją zamknąć. Nie powinien pobierać argumentów od użytkownika. Wszystko ze ścieżki i treści jest predefiniowane. Jak mogę to zrobić?

Gowtham Gopalakrishnan
źródło

Odpowiedzi:

24

Wystarczy użyć przekierowania wyjściowego. Na przykład

#!/bin/bash

echo "some file content" > /path/to/outputfile

>Zapisze wszystkie stdinprzewidziane przez stdoutod echodo pliku outputfiletutaj.

Możesz też użyć teedo tego fajki. Na przykład

echo "some file content" | tee outputfile

Pamiętaj, że którykolwiek z przykładów zastąpi istniejący outputfile.

Jeśli chcesz dołączyć do aktualnie istniejącego pliku, użyj >>zamiast >lub tee -a.

Jeśli nie akceptujesz danych wprowadzanych przez użytkownika w tym wierszu, żadne dane wprowadzane przez użytkownika nie mogą tutaj zmienić zachowania.

gertvdijk
źródło
Dla osób, które chcą mieć wyłącznik linii w swoim pliku, zobacz tutaj: stackoverflow.com/a/9741470/10512595
BelovedFool
18

Myślę, że lepiej jest użyć tutaj dokumentu, aby utworzyć nowy plik w skrypcie. Jest czystszy, co moim zdaniem sprzyja czytelności.

Na przykład:

cat > filename <<- "EOF"
file contents
more contents
EOF

"-"W <<-jest opcjonalne, pozwalające na kartach wcięcia, które zostaną odsłonięte , gdy plik jest tworzony. Cytaty wokół "EOF"uniemożliwiają zastępcy „tutaj doc”.

Aaron Hall
źródło