2015-08-17 112 views
-1

我在UNIX上使用VoiceOver Utility在Mac OS X上制作一个琐事游戏。我的shell脚本如下。为什么我的if-else条件不起作用?有任何想法吗?UNIX shell脚本 - if else条件

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

用'if [“$ answer1”=“美国队长”]测试它(看看空格) – higuaro

+0

谢谢higuaro。不幸的是,双引号方法不能修复程序。 – ctaylorgraphics

+2

注意''后面的空格。 '['是一个命令,但'$ answer1'的值不太可能是'[$ answer1'是一个有效的命令。你希望''answer1“'成为命令'['的第一个参数,所以你需要在'['后面插入一个空格。如果使用'test'而不是''',这会更清晰。 –

回答

-1

如果bash的语法是:

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

谢谢,Nathan。不幸的是,该方法不适用于该程序。 – ctaylorgraphics

0

由于Higuaro &威廉Pursell您的帮助!

这是我的UNIX shell - 琐事游戏的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