268 votes

Comment écrire une chaîne de caractères de plusieurs lignes en utilisant Bash avec des variables ?

Comment puis-je écrire plusieurs lignes dans un fichier appelé myconfig.conf en utilisant BASH ?

#!/bin/bash
kernel="2.6.39";
distro="xyz";

echo <<< EOL
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4
line ...
EOL >> /etc/myconfig.conf;
cat /etc/myconfig.conf;

4voto

Pratik Points 50

J'utilise Mac OS et d'écrire plusieurs lignes dans un SH script

#! /bin/bash
FILE_NAME="SomeRandomFile"

touch $FILE_NAME

echo """I wrote all
the  
stuff
here.
And to access a variable we can use
$FILE_NAME  

""" >> $FILE_NAME

cat $FILE_NAME

N'oubliez pas d'attribuer le chmod nécessaire au fichier script. J'ai utilisé

chmod u+x myScriptFile.sh

0voto

Achyut Points 115

Cela pourrait fonctionner :

#!/bin/bash
kernel="2.6.39";
distro="xyz";

echo "
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4
line ...
" > /etc/myconfig.conf;
cat /etc/myconfig.conf;

-1voto

animaacija Points 50

J'ai l'habitude de mettre le modèle dans le fichier et d'utiliser ce moteur de modèle :

### <template-file> [ARG=VALUE..]
## Variables are replaced only within "{{" and "}}" notation.
## Example:
##         $0 path-to-tmpl REF=master pass=xx
##         # The template may look like so:
##         #    $pass = ["user", "{{ $pass }}"];
##         # Resulting in:
##         #    $pass = ["user", "xxx"];
##~
template() {
    tmpl=$1
    shift

    for i in $@; do
        declare $i;
    done

    eval "echo \"$(sed -e 's/"/\\"/g' -e 's/\$/\\$/g' -e 's/{{\s*\\\(\$\w*\)\s*}}/\1/g' $tmpl)\""
}

-2voto

Kat Lim Ruiz Points 381

Un autre moyen plus simple je pense mais certainement pour un petit nombre de lignes

touch myfile.txt
echo "line1">>myfile.txt
echo "line2">>myfile.txt
echo "line3">>myfile.txt
echo "line4">>myfile.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X