web-dev-qa-db-fra.com

Création de fichiers avec du contenu avec un script Shell

J'ai besoin de configurer un serveur avec peu de fichiers et je veux le faire par programme.

j'ai besoin de créer des fichiers disent /home/a.config, /var/spool/b.config, /etc/c.config

les fichiers ci-dessus ont un contenu (plusieurs lignes).

je veux créer UN script Shell capable de créer les trois fichiers avec plusieurs lignes (environ 10) . Je voudrais savoir comment utiliser la commande CAT pour le faire. (à l'intérieur du script shell).

je cherche quelque chose comme ça

echo " going to create  /home/a.config"

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " >  /home/a.config 

merci

33
Mahes

Vous pouvez utiliser un document here:

cat <<EOF >/home/a.config
first line
second line
third line
EOF

Vous pouvez en placer plusieurs dans le même script.

67
Dennis Williamson

Ainsi:

#!/bin/bash

var="your text"
echo "simply put,
just so: $var" > a.config

Pour plus d'informations, voir Partie entrée/sortie de abs .
J'espère que cela t'aides.

6
Victor Sorokin

fichier = "/ tmp/test.txt"
echo "Ajout de la première ligne"> $ file
echo "Ajout de la première ligne remplacée">> $ fichier
echo "Ajouter une deuxième ligne" >> $ fichier
echo "Ajouter une troisième ligne" >> $ fichier
fichier cat $

> pour ajouter/remplacer le contenu (ici le contenu actuel a été remplacé par la 2ème ligne)
>> à ajouter 

Résultat
Ajout de la première ligne remplacée
Ajouter une deuxième ligne
Ajouter une troisième ligne

6
Allwin
>\#!/bin/bash
>
>var="your text" <br>
>echo "simply put, <br>
>just so: $var" > a.config

Notez que vous devez également échapper certains caractères pour éviter qu'ils interfèrent avec ce que vous essayez de faire, par exemple $ `et" briseront une telle déclaration à moins d'être précédés d'une barre oblique inverse, c'est-à-dire\`\ $ ou \"

donc, si nous définissons ce qui suit: 

var = "100"

les éléments suivants ne se comporteraient pas comme prévu:

echo "tout simplement, 
il suffit de "prêter" US $ $ var "> a.config

mais ce qui suit fonctionnerait correctement:

echo "tout simplement, 
juste\"prêtez-moi" US\$ $ var "> a.config

1
scotjam1981

Si votre texte contient des variables telles que $ 1 ou $ HOMEDIR, elles sont normalement évaluées et remplacées par des valeurs réelles. Si vous voulez éviter que ceux-ci ne soient substitués, vous devez citer la chaîne de limite d'ouverture (EOF dans l'exemple ci-dessous) avec guillemet simple 'EOF', double guillemet "EOF" ou la faire précéder d'une barre oblique inversée \EOF

La limite de la chaîne reste telle quelle. EOF

Ceci est particulièrement utile si vous écrivez des scripts Shell dans un fichier.

cat << 'EOF' >/etc/rc.d/init.d/startup
case $1 in
    start)
        start 
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
       pid=$(Tomcat_pid)
        if [ -n "$pid" ]
        then
           echo "Tomcat is running with pid: $pid"
        else
           echo "Tomcat is not running"
        fi
        ;;
esac

EOF

Voir Exemple 19.7 Substitution de paramètre désactivée dans Ici Documents

1
Deepak Rao