Quiero hacer eco de una nueva línea a un archivo entre variables en un script de shell. Aquí está mi código:
var1 = "Hola" var2 = "Mundo!" logwrite = "$ var1 [Aquí es donde quiero insertar una nueva línea] $ var2 echo "$ logwrite" >> /Users/username/Desktop/user.txt
En este momento, cuando ejecuto mi script, el archivo user.txt muestra esto:
Hola Mundo!
Quiero que muestre:
Hola ¡Mundo!
¿¿Cómo hago esto??
EDITAR: Aquí está mi script de shell:
echo -n "¿Cuál es tu nombre de pila?" Lee primero echo -n "¿Cuál es tu apellido?" leer el último echo -n "¿Cuál es tu segundo nombre?" leer medio echo -n "¿Cuál es tu cumpleaños?" leer cumpleaños echo -e "Nombre: $ nombre / n Apellido: $ apellido / nNombre intermedio: $ nombre medio / nCumpleaños: $ cumpleaños" >> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~ / Desktop / user.txt"
shell
shell-script
echo
daviesgeek
fuente
fuente
printf "%s\n" $var1 $var2 >> file
?Respuestas:
Explicación:
La
\n
secuencia de escape indica un avance de línea. Pasar el-e
argumento a echo permite la interpretación de secuencias de escape.Incluso puede simplificarse aún más:
o incluso:
fuente
\n
en lugar de/n
debería hacer el truco :)-e
bandera.o en realidad no necesitas vars:
hay un problema con la respuesta de john t: si alguno de los vars tenía la cadena \ n (o alguna otra secuencia como \ t) se traducirán. uno puede obtener algo similar a su respuesta con printf:
También hmm. veo que estás componiendo la respuesta en una variable $ logwrite. Si este es el único uso de esta variable, parece inútil.
Creo que un documento aquí podría ser más legible, especialmente si tiene muchas líneas para agregar al registro:
(esta palabra, EOF, es un delimitador que puede elegir. Puede ser cualquier palabra).
tenga en cuenta que el heredoc expandirá las variables $, como las comillas dobles. si no quieres esto, cita el heredoc, como << "EOF"
fuente
\n
, de ahí por qué proporcioné la respuesta. La metodología "qué pasaría si" llevaría cada pregunta en este sitio a una discusión interminable. Cuando llega a ese camino, puede hacer otra pregunta :)printf
. Es POSIX: stackoverflow.com/a/34947759/895245