¿Por qué este código no funciona si tiene un espacio?

¿Por qué este código no funciona si tiene un espacio?

Disculpas por ser tonto. Intenté encontrar una respuesta, pero fue en vano. Si ya se ha respondido antes (lo cual es probable), entonces no lo he visto.

#!/bin/bash
read -p “Whatisyourname” name
echo "Hello $name"
^This piece of code does work.

#!/bin/bash
read -p “What is your name” name
echo "Hello $name"

^Este fragmento de código no funciona. Imprime la primera palabra como un mensaje ( What). Después de ingresar la entrada (x), dirá

Command 'x' not found, but can be installed with: sudo snap install x

Me pregunto por qué sale así.

Sé que podría separarlo todo con eco, leer y luego hacer eco. Afortunadamente, eso funciona incluso con espacios. Solo tengo curiosidad por saber por qué esto no es así.

Respuesta1

Esto se debe a que las comillas no son comillas ASCII ( y "son diferentes si miras más de cerca), por lo tanto, no evitan que el shell divida las palabras.

read -p “Whatisyourname” name

El mensaje de aviso es “Whatisyourname”.

read -p “What is your name” name

El mensaje de aviso es “What. El resto ( is, youry ) se asignaría a variables según la entrada del usuario name”.name

Te refieres a

read -p "What is your name" name

información relacionada