このコードにスペースが含まれていると、なぜ機能しないのでしょうか?

このコードにスペースが含まれていると、なぜ機能しないのでしょうか?

愚かなことを言って申し訳ありません。答えを見つけようとしましたが、見つかりませんでした。もし以前に答えが出ていたなら(おそらくそうですが)、私はまだその答えを見ていません。

#!/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。残り ( isyourname”)nameは、ユーザー入力に応じて変数に割り当てられます。

もしかして

read -p "What is your name" name

関連情報