このコードにスペースが含まれている場合、なぜ動作しませんか?

このコードにスペースが含まれている場合、なぜ動作しませんか?

あなたの愚かさについて謝罪してください。私は答えを見つけようとしましたが、役に立ちませんでした。以前に答えがあったら(おそらく)見たことがないのです。

#!/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、、yourおよびname”)は、nameユーザー入力に従って変数に割り当てられます。

はい、意味

read -p "What is your name" name

関連情報