web-dev-qa-db-fra.com

Créer, écrire et sauvegarder un fichier à partir d'un script shell

Je ne veux pas écrire le fichier manuellement, alors j'ai créé un script Shell. Existe-t-il un moyen d'écrire et de sauvegarder le fichier automatiquement sans que l'utilisateur n'appuie sur les touches?

Sudo nano blah
#write stuff to file
#save file
#continue

^ Ce sera dans un fichier * .sh

Ou existe-t-il un autre moyen de créer un fichier texte simple dans un script?

8
Zarkopafilis

Pour des séquences de commandes plus complexes, vous devriez envisager d'utiliser la commande catavec un ici document . Le format de base est

command > file << END_TEXT
some text here
more text here
END_TEXT

Il existe deux comportements légèrement différents selon que l’étiquette END_TEXT est entre guillemets ou non:

  1. étiquette non citée : le contenu est écrit après les développements habituels du shell

  2. étiquette entre guillemets : le contenu du document ici est traité littéralement, sans les extensions habituelles de Shell

Par exemple, considérons le script suivant

#!/bin/bash

var1="VALUE 1"
var2="VALUE 2"

cat > file1 << EOF1
do some commands on "$var1" 
and/or "$var2"
EOF1

cat > file2 << "EOF2"
do some commands on "$var1" 
and/or "$var2"
EOF2

Les résultats sont

$ cat file1
do some commands on "VALUE 1" 
and/or "VALUE 2"

et

$ cat file2
do some commands on "$var1" 
and/or "$var2"

Si vous exportez des commandes Shell à partir de votre script, vous voulez probablement le formulaire cité.

13
steeldriver

Il n’est pas nécessaire de s’en prendre à un éditeur pour le faire.

Vous pouvez ajouter quelque chose à un fichier avec une simple commande echo. Par exemple

echo "Hello World" >> txt

Ajoutera "Hello world" au fichier txt. si le fichier n'existe pas, il sera créé.

Ou si le fichier existe peut-être déjà et que vous voulez l'écraser

echo "Hello World" > txt

Pour la première ligne: et

echo "I'm feeling good" >> txt
echo "how are you" >> txt 

Pour les lignes suivantes.

Au plus simple, le script .sh pourrait simplement contenir un ensemble de commandes echo.

7
Warren Hill