Je veux écrire la commande RUN suivante dans le fichier Docker. Mais docker ne préserve pas les nouvelles lignes.
RUN echo "[repo] \
name = YUM Repository \
baseurl = https://example.com/packages/ \
enabled = 1 \
gpgcheck = 0" > /etc/yum.repos.d/Repo.repoxyz
Je sais que \
à la fin de chaque ligne échappe à la nouvelle ligne. Mais, y a-t-il moyen de pouvoir écrire plusieurs lignes en préservant la nouvelle ligne?
Commencez votre commande avec $'
, terminez-la avec '
et utilisez \n\
pour les nouvelles lignes, comme ceci:
RUN echo $'[repo] \n\
name = YUM Repository \n\
baseurl = https://example.com/packages/ \n\
enabled = 1 \n\
gpgcheck = 0' > /etc/yum.repos.d/Repo.repoxyz
J'ai utilisé printf
. Écrire tout le texte sur une ligne en utilisant "\ n".
En cours d'exécution:
RUN printf 'example \ntext \nhere' >> example.txt
inserts:
example
text
here
dans example.txt
Vous pouvez utiliser:
RUN echo "\
[repo] \n\
name = YUM Repository \n\
baseurl = https://example.com/packages/ \n\
enabled = 1 \n\
gpgcheck = 0\
" > /etc/yum.repos.d/Repo.repoxyz
De cette façon, vous aurez un moyen rapide de vérifier le contenu du fichier. Vous devez juste savoir que vous devez terminer chaque ligne avec \
et insérer le \n
si nécessaire.