2015-10-30 4 views
17

Voglio scrivere il seguente comando RUN nel Dockerfile. Ma la finestra mobile non sta preservando le nuove linee.Come scrivere i comandi con più linee in Dockerfile preservando le nuove linee?

RUN echo "[repo] \ 
name   = YUM Repository \ 
baseurl   = https://example.com/packages/ \ 
enabled   = 1 \ 
gpgcheck  = 0" > /etc/yum.repos.d/Repo.repoxyz 

So che \ alla fine di ogni riga sfugge alla nuova riga. Ma, c'è un modo in cui posso scrivere più righe preservando la nuova linea.

+0

Si sta utilizzando la piattaforma non * nix? Perché questo funziona per me su Linux. – user

+0

@user, stavo usando Linux. –

risposta

25

Avviare il comando con $', finiscono con ' e utilizzare \n\ per nuove righe, come questo:

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 
+1

Funziona! Grazie! –

+0

La sintassi $ dopo echo è una funzione di Dockerfile? Perché, non sono riuscito a trovarlo nella documentazione. –

+4

È la sintassi di bash. Vedi questa domanda per maggiori informazioni: http://stackoverflow.com/a/11966402/1395437 –

10

ho usato printf. Scrivere tutto il testo in una riga usando "\ n".

Esecuzione:

RUN printf 'example \ntext \nhere' >> example.txt 

inserti:

example 
text 
here 

in example.txt