que quiere decir
echo "$lines"
en lugar de
echo $lines
Elaborar:
echo $lines
significa "formar un nuevo comando reemplazando $lines
con el contenido de la variable denominada lines
, dividiéndolo en espacios en blanco para formar cero o más argumentos nuevos para el comando echo
. Para examen PLE:
lines='1 2 3'
echo $lines # equivalent to "echo 1 2 3"
lines='1 2 3'
echo $lines # also equivalent to "echo 1 2 3"
lines="1
2
3"
echo $lines # also equivalent to "echo 1 2 3"
Todos estos ejemplos son equivalentes, ya que la cáscara ignora el tipo específico de espacios en blanco entre las palabras individuales almacenados en la variable lines
. En realidad, para ser más precisos, el shell divide el contenido de la variable en los caracteres de la variable especial IFS
(Separador interno de campos), que se predetermina (al menos en mi versión de bash) a los tres caracteres espacio, pestaña y línea nueva .
echo "$lines"
, por otro lado, significa formar un único argumento nuevo a partir del valor exacto de la variable lines
.
Para obtener más información, consulte las secciones "Ampliación" y "División de palabras" de la página del manual de bash.
abuso felina: 'líneas = $ (grep hola abc.txt)' . –
Véase también http://stackoverflow.com/questions/613572/capturing-multiple-line-output-to-a-bash-variable/ –