Creazione di un file con alcuni contenuti negli script Shell


20

Sono un po 'nuovo di Shell Scripting e voglio creare un nuovo file all'interno dello script e voglio aggiungere contenuto e quindi chiuderlo. Non dovrebbe prendere gli argomenti dall'utente. Tutto dal percorso e dal contenuto è predefinito. Come posso farlo?

Risposte:


24

Usa solo il reindirizzamento dell'output. Per esempio

#!/bin/bash

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

Il >scriverà tutto stdinfornito dal stdoutdi echoal file outputfilequi.

In alternativa, puoi anche usare teee una pipe per questo. Per esempio

echo "some file content" | tee outputfile

Essere consapevoli del fatto che uno qualsiasi degli esempi sovrascriverà un esistente outputfile.

Se è necessario aggiungere a un file attualmente esistente, utilizzare >>invece di >o tee -a.

Se non si accetta l'input dell'utente in questa riga, nessun input dell'utente può modificare il comportamento qui.


Per le persone che vogliono avere un'interruzione di riga all'interno del proprio file, vedere qui: stackoverflow.com/a/9741470/10512595
BelovedFool

18

Penso che sia meglio usare un documento qui per creare un nuovo file in uno script. È più pulito, e credo che incoraggi la leggibilità.

Per esempio:

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

L' "-"a <<-è facoltativo, consentendo trattini schede che verranno spogliati quando viene creato il file. Le virgolette intorno al "EOF""here doc" impediscono qualsiasi sostituzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.