Membuat file dengan beberapa konten dalam skrip Shell

20

Saya sedikit baru dengan Shell Scripting dan saya ingin membuat file baru di dalam skrip dan ingin menambahkan konten dan kemudian menutupnya. Seharusnya tidak mengambil argumen dari pengguna. Segala sesuatu dari jalur dan konten sudah ditentukan sebelumnya. Bagaimana saya bisa melakukannya?

Gowtham Gopalakrishnan
sumber

Jawaban:

24

Cukup gunakan redirection output. Misalnya

#!/bin/bash

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

The >akan menulis semua stdinyang disediakan oleh stdoutdari echoke file outputfiledi sini.

Atau, Anda juga bisa menggunakan teedan pipa untuk ini. Misalnya

echo "some file content" | tee outputfile

Ketahuilah bahwa salah satu contoh akan menimpa yang sudah ada outputfile.

Jika Anda perlu menambahkan file yang ada saat ini, gunakan >>sebagai ganti >atau tee -a.

Jika Anda tidak menerima input pengguna di baris ini, tidak ada input pengguna yang dapat mengubah perilaku di sini.

gertvdijk
sumber
Untuk orang-orang yang ingin memiliki pemecah baris di dalam file mereka, lihat di sini: stackoverflow.com/a/9741470/10512595
BelovedFool
18

Saya pikir lebih baik menggunakan doc di sini untuk membuat file baru dalam skrip. Ini terlihat lebih bersih, yang saya percaya mendorong keterbacaan.

Sebagai contoh:

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

The "-"dalam <<-adalah opsional, memungkinkan untuk indentasi tab yang akan dilucuti ketika file tersebut dibuat. Kutipan di sekitar "EOF"mencegah "di sini doc" dari melakukan penggantian.

Aaron Hall
sumber