Почему этот код не работает, если в нем есть пробел?

Почему этот код не работает, если в нем есть пробел?

Извините за тупость. Я пытался найти ответ, но безуспешно. Если на него уже отвечали (что вполне вероятно), значит я его не видел.

#!/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"

^Этот фрагмент кода не работает. Он печатает первое слово как подсказку ( What). После ввода ввода (x) он скажет

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

Просто интересно, почему так получается.

Я знаю, что я мог бы просто разделить все это с помощью echo, read, а затем echo. Это работает даже с пробелами, к счастью. Мне просто интересно, почему это не работает.

решение1

Это связано с тем, что ваши кавычки не являются кавычками ASCII ( и "отличаются, если присмотреться), поэтому они не предотвращают разбиение слов оболочкой.

read -p “Whatisyourname” name

Сообщение-подсказка: “Whatisyourname”.

read -p “What is your name” name

Сообщение подсказки: “What. Остальные ( is, your, name”и name) будут назначены переменным в соответствии с вводом пользователя.

Ты имеешь в виду

read -p "What is your name" name

Связанный контент