이 코드에 공백이 있으면 왜 작동하지 않나요?

이 코드에 공백이 있으면 왜 작동하지 않나요?

당신의 어리석음에 대해 사과하세요. 나는 답을 찾으려고 노력했지만 아무 소용이 없었습니다. 이전에 답변이 있었다면 (아마도) 본 적이 없는 것입니다.

#!/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)로 인쇄합니다. input(x)를 입력하면 다음과 같이 표시됩니다.

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

왜 이런 결과가 발생하는지 알고 싶습니다.

나는 echo를 사용하여 모든 것을 분리하고 읽은 다음 에코할 수 있다는 것을 알고 있습니다. 고맙게도 이것은 공백에서도 작동합니다. 왜 이것이 작동하지 않는지 궁금합니다.

답변1

이는 따옴표가 ASCII 따옴표가 아니기 때문입니다( 자세히 살펴보면 다릅니다). 따라서 셸이 단어 분리를 방지하지 못합니다 ."

read -p “Whatisyourname” name

프롬프트 메시지는 입니다 “Whatisyourname”.

read -p “What is your name” name

프롬프트 메시지는 입니다 “What. 나머지( is, yourname”)는 name사용자 입력에 따라 변수에 할당됩니다.

네 말 뜻은

read -p "What is your name" name

관련 정보