2015-08-17 7 views
-1

Я делаю пустяковую игру в UNIX с утилитой VoiceOver для Mac OS X. Мой сценарий оболочки ниже. Почему мое условие if-else не будет работать? Есть идеи?UNIX shell scripting - if else 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

испытание его с ', если [ "$ answer1"= "Капитан Америка"]' (смотреть на пространствах) – higuaro

+0

Спасибо, higuaro. К сожалению, метод двойной кавычки не исправляет программу. – ctaylorgraphics

+2

Обратите внимание на пробел после '['. '[' является командой, но очень маловероятно, что значение '$ answer1' таково, что' [$ answer1' является допустимой командой. Вы хотите, чтобы '' $ answer1 "' был первым аргументом команды '[', поэтому вам нужно вставить пробел после '['. Это намного яснее, если вы используете 'test' вместо' ['. –

ответ

-1

Если синтаксис Баш:

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

Так попробуйте:

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

Спасибо, Натан. К сожалению, этот метод не работает для программы. – ctaylorgraphics

0

Благодаря Higuaro & Уильям Перселл за вашу помощь!

Вот моя оболочка UNIX - мелочи для 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