Por que esse código não funciona se contém um espaço?

Por que esse código não funciona se contém um espaço?

Desculpas por ser burro. Tentei encontrar uma resposta, mas sem sucesso. Se já foi respondido antes (o que é provável), então não o vi.

#!/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 trecho de código não funciona. Ele imprime a primeira palavra como um prompt ( What). Depois de inserir a entrada (x), ele dirá

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

Só estou me perguntando por que isso acontece assim.

Eu sei que poderia simplesmente separar tudo com eco, ler e depois ecoar. Isso funciona mesmo com espaços, felizmente. Estou apenas curioso para saber por que isso não acontece.

Responder1

Isso ocorre porque suas aspas não são aspas ASCII ( e "são diferentes se você olhar mais de perto), portanto, elas não impedem a divisão de palavras pelo shell.

read -p “Whatisyourname” name

A mensagem de alerta é “Whatisyourname”.

read -p “What is your name” name

A mensagem de alerta é “What. O restante ( is,, e ) seria atribuído a variáveis ​​de acordo com a entrada do usuário your.name”name

Você quer dizer

read -p "What is your name" name

informação relacionada