2015-08-17 1 views
-1

Je crée un jeu-questionnaire sous UNIX avec l'utilitaire VoiceOver sur Mac OS X. Mon script shell est ci-dessous. Pourquoi ma condition if-else ne fonctionnera-t-elle pas? Des idées?Scripting shell UNIX - si autre condition

#!/bin/sh 
clear 

echo "Hey Gamers! Thanks for playing MARVEL COMICS" 

echo "What is your super hero name?" 
say -v Victoria "What is your super hero name?" 
read name 

echo "$name, sounds like a pretty epic hero." 
say -v Victoria "$name, sounds like a pretty epic hero." 

echo "See if you know the names of other epic heroes from Marvel Comics." 
say -v Victoria "See if you know the names of other epic heroes from Marvel Comics." 


echo "#1. World War 2 Veteran, Steve Rogers, is also known by what super hero name?" 
say -v Victoria "World War 2 Veteran, Steve Rogers, is also known by what super hero name?" 
read answer1 

if [$answer1 = "captain america"] 
then 
echo "CORRECT. - Steve Rogers is Captain America." 
say -v Victoria "Correct. Steve Rogers is Captain America."; 

else 
echo "INCORRECT. - Steve Rogers is Captain America" 
say -v Victoria "Incorrect. Steve Rogers is Captain America" 
fi 
+2

essai avec 'si [ "answer1 de $"= "captain america"]' (regardez les espaces) – higuaro

+0

Merci, higuaro. Malheureusement, la méthode des guillemets doubles ne corrige pas le programme. – ctaylorgraphics

+2

Notez l'espace après le '['. '[' est une commande, mais il est très peu probable que la valeur de '$ answer1' soit telle que' [$ answer1' est une commande valide. Vous voulez que '" $ answer1 "' soit le premier argument de la commande '[', vous devez donc insérer un espace après le '['. C'est beaucoup plus clair si vous utilisez 'test' au lieu de' ['. –

Répondre

-1

Si la syntaxe bash est:

if [ expression 1 ] then Statement(s) to be executed if expression 1 is true else Statement(s) to be executed if expression 1 is false fi

Donc, essayez:

if [$answer1 = "captain america"] then echo "CORRECT. - Steve Rogers is Captain America." say -v Victoria "Correct. Steve Rogers is Captain America."; else echo "INCORRECT. - Steve Rogers is Captain America" say -v Victoria "Incorrect. Steve Rogers is Captain America" fi

+0

Merci, Nathan. Malheureusement, cette méthode ne fonctionne pas pour le programme. – ctaylorgraphics

0

Merci à Higuaro & William Pursell pour votre aide!

Voici mon shell UNIX - jeu-questionnaire pour Mac OS X!

#!/bin/sh 
clear 

echo "Hey Gamers! Thanks for playing MARVEL COMICS" 

echo "What is your super hero name?" 
say -v Victoria "What is your super hero name?" 
read name 

echo "$name, sounds like a pretty epic hero." 
say -v Victoria "$name, sounds like a pretty epic hero." 

echo "See if you know the names of other epic heroes from Marvel Comics." 
say -v Victoria "See if you know the names of other epic heroes from Marvel Comics." 


echo "#1. World War 2 Veteran, Steve Rogers, is also known by Captain (what)?" 
say -v Victoria "World War 2 Veteran, Steve Rogers, is also known by Captain what?" 
read answer1 

if [ $answer1 = "america" ] 
then 
echo "CORRECT. - Steve Rogers is Captain America." 
say -v Victoria "Correct. Steve Rogers is Captain America."; 

else 
echo "INCORRECT. - Steve Rogers is Captain America" 
say -v Victoria "Incorrect. Steve Rogers is Captain America" 
fi