Utiliser echo et read $ variable ne fonctionnant pas sous UNIX! (UNIX débutant!)

J’ai donc commencé à apprendre UNIX hier et j’essaie de créer un script de base qui demande vos coordonnées (nom, adresse, numéro de téléphone), puis les stocke dans un fichier appelé details.out.

Ça me rend dingue! C’est tellement simple / basique, mais je ne peux pas le faire, et je suis resté coincé pendant une bonne heure maintenant …

après beaucoup de recherches sur Google et de recherche, je ne peux toujours pas trouver la réponse. C’est ce que j’ai fait jusqu’à présent et je me demandais où je me trompais!

echo Please type your first and last name read $firstname $lastname echo Please type in your address read $address echo Please type in your phone number read $phone echo Thank you very much! echo The details have been stored in '"details.out"' cat >> details.out <<EOF Name: echo $firstname echo $lastname Address: echo $address Phone Number: echo $phone EOF 

Lorsque je lis “details.out”, il s’affiche comme suit: Nom: echo Adresse: echo Numéro de téléphone: echo

Toute aide serait appréciée! (et si vous essayez de me diriger dans les bonnes directions par opposition à me donner la réponse, je vous en serais reconnaissant!)

PS J’utilise Putty si ça aide!

  • lorsque vous utilisez read (ou déclarez des variables), ne mettez pas $ sigil sur les noms de variables
  • lorsque vous affichez une variable, placez toujours des guillemets doubles: ex. echo "$var"
  • quand vous utilisez ici-doc , pas besoin de mettre la commande echo
  • Lorsque vous utilisez echo, utilisez des guillemets:

“Double quote” chaque extension, et tout ce qui pourrait contenir un caractère spécial, par exemple. “$ var”, “$ @”, “$ {tableau [@]}”, “$ (commande)”. Utilisez des guillemets simples pour créer quelque chose de littéral, par exemple. «Coûts 5 USD». Voir http://mywiki.wooledge.org/Quotes http://mywiki.wooledge.org/Arguments et http://wiki.bash-hackers.org/syntax/words

Chaque fois que vous mettez un $ avant un nom de variable, vous récupérez la valeur actuelle de cette variable. Vous ne voulez pas faire cela dans votre commande de read . Les variables sont vides au démarrage du script, les valeurs vides sont placées à la place de $firstname et $lastname et read est appelée sans arguments, ce qui entraîne la lecture d’une ligne et son rejet.

Définition d’une variable avec affectation:

 var=value 

Définir une variable avec read :

 read var 

Ni l’un ni l’autre n’utilisent $var car ils ne veulent pas regarder la valeur actuelle, ils veulent la remplacer.

Il n’y a pas non plus besoin de ces echo dans l’hérédoc. Ils ne sont pas en position de commande, ils seront donc simplement copiés dans le cadre de l’entrée dans cat .