UNIX shell脚本编写-如果存在其他条件
我正在用Mac OS X上的VoiceOver实用程序在UNIX中制作一个小游戏。我的shell脚本如下。为什么我的if-else条件不起作用?有什么想法吗?UNIX shell脚本编写-如果存在其他条件,shell,unix,if-statement,Shell,Unix,If Statement,我正在用Mac OS X上的VoiceOver实用程序在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
#!/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
如果bash语法为:
if[表达式1]
然后
表达式1为真时要执行的语句
其他的
表达式1为false时要执行的语句
fi
因此,请尝试:
if[$answer1=“美国船长”]
然后
echo“正确-Steve Rogers是美国队长”
说-v维多利亚“正确。史蒂夫·罗杰斯是美国队长。”;
其他的
echo“不正确-史蒂夫·罗杰斯是美国队长”
对维多利亚说“不对,史蒂夫·罗杰斯是美国队长”
fi
感谢伊瓜罗和威廉·珀塞尔的帮助
这是我的用于MacOSX的UNIX shell琐事游戏
#!/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
如果[“$answer1”=“captain america”](查看空格)请使用
进行测试。谢谢,higuaro。不幸的是,双引号方法无法修复程序。请注意,[
[
后面的空格是一个命令,但$answer1
的值不太可能是这样的:[$answer1
是一个有效的命令。您希望“$answer1”
成为该命令的第一个参数[
,因此您需要在[
之后插入一个空格。如果您使用test
而不是[
。非常感谢,William Pursell:)我们有一个功能正常的游戏!再次感谢higuaro!higuaro,关于括号中的空格和变量字符串值之间的空格,你是对的。谢谢,Nathan。不幸的是,该方法不适用于该程序。