UNIX shell脚本编写-如果存在其他条件

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

我正在用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 "$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。不幸的是,该方法不适用于该程序。