Warum funktioniert dieser Code nicht, wenn er ein Leerzeichen enthält?

Warum funktioniert dieser Code nicht, wenn er ein Leerzeichen enthält?

Entschuldigen Sie, dass ich so dumm bin. Ich habe versucht, eine Antwort zu finden, aber ohne Erfolg. Wenn die Frage schon einmal beantwortet wurde (was wahrscheinlich ist), dann habe ich sie nicht gesehen.

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

^Dieser Code funktioniert nicht. Er druckt das erste Wort als Eingabeaufforderung ( What). Nach der Eingabe von (x) wird angezeigt

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

Ich frage mich nur, warum es so herauskommt.

Ich weiß, dass ich alles einfach mit „echo“, „read“ und dann „echo“ trennen könnte. Das funktioniert zum Glück sogar mit Leerzeichen. Mich interessiert nur, warum das nicht funktioniert.

Antwort1

Das liegt daran, dass Ihre Anführungszeichen keine ASCII-Anführungszeichen sind ( und "bei genauerem Hinsehen anders aussehen). Daher verhindern sie nicht die Worttrennung durch die Shell.

read -p “Whatisyourname” name

Die Eingabeaufforderung lautet “Whatisyourname”.

read -p “What is your name” name

Die Eingabeaufforderung lautet “What. Der Rest ( is, your, name”und name) wird entsprechend der Benutzereingabe den Variablen zugewiesen.

Was meinen Sie

read -p "What is your name" name

verwandte Informationen