¿Por qué las comillas dobles hacen que la cadena se ejecute como una función?

-1

Una función simple recibe dos argumentos y agrega and , luego imprímelos.

function myprint(){ echo "$1 and $2";}

Funciona.

myprint  xx  yy
xx and yy

Es una cadena, bash lo analiza por separado.

"myprint  xx  yy"
bash: myprint  xx  yy: command not found

¿Por qué las comillas dobles hacen que la cadena se ejecute como una función?

""myprint  xx  yy""
xx and yy
scrapy
fuente

Respuestas:

3

Sus "comillas dobles" no están anidadas. Dos veces se abre y se cierra una doble cita de inmediato.

""myprint  xx  yy""
^^                  this is one pair of quotes with empty content
                 ^^ this is anther pair with empty content
  ^^^^^^^^^^^^^^^   this is not quoted at all

En efecto ""myprint es el comando llamado: la cadena vacía concatenada con "myprint", esto se resuelve en el comando myprint función; y el último argumento es la cadena "yy" concatenada con la cadena vacía.

Así que obtienes sin comillas myprint xx yy. Todo el comando original se comporta como tal.

Kamil Maciorowski
fuente