2015-08-17 104 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