#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
Por lo general, grep muestra cada coincidencia en una línea separada cuando se ejecuta en la línea de comando. Sin embargo, en los scripts anteriores, la nueva línea que separa cada coincidencia desaparece. ¿Alguien sabe cómo se puede preservar la nueva línea?
Respuestas:
No te estás perdiendo en la tarea sino en el eco. Puede ver esto claramente si:
echo "${out}"
Verá un efecto similar con el siguiente script:
x="Hello, I am a string with newlines" echo "=====" echo ${x} echo "=====" echo "${x}" echo "====="
que salidas:
Y, irrelevante para su pregunta, pero me gustaría mencionarlo de todos modos, prefiero usar la construcción $ () en lugar de las comillas invertidas, solo por el beneficio adicional de poder anidar comandos. Entonces su línea de script se convierte en:
Ahora, puede que no se vea diferente (y no lo es) pero hace posibles comandos más complejos como:
fuente
Ponga $ entre comillas:
#!/usr/local/bin/bash out=`grep apache README` echo "$out";
fuente
Citar variables en bash conserva los espacios en blanco.
Por ejemplo:
#!/bin/bash var1="A B C D" echo $var1 # A B C D echo "$var1" # A B C D
como las nuevas líneas son espacios en blanco, se "eliminan"
fuente
Combinando otras respuestas en una sola línea:
echo "($(grep apache README))"
fuente