2014-09-01 78 views
0

下面是我的脚本,我没有得到正确的输出,我输入爱丽丝我得到鲍勃作为输出,但是当我打字鲍勃我应该得到爱丽丝作为输出,但我我得到鲍勃作为输出。请让我知道什么是在我的脚本错误脚本错误,没有得到正确的输出

#!/bin/bash 
echo "Enter your name" 
read a 
if [ $a==alice ]; 
then 
echo "bob" 
elif [ $a==bob ]; 
then 
echo "alice" 
else 
echo "STDERR" 
fi 
+0

你需要周围的空间''==。 '如果[[''操作符被使用,否则'['$ a“= alice]]' – 2014-09-01 06:13:00

回答

1

你应该把空间周围的==运营商,以便它的[一个三个参数的形式。

没有空格,它使用单参数表单,如果字符串长度不为零(如字符串bob==alice),则为true。

0

空间。当使用[操作人员或使用关键字test,你将要使用的= POSIX标准和可移植性:

[ "$a" = alice ] # remember to quote your variable when comparing strings 

虽然==许可[test,你将失去便携性。另外,如果你使用的是[[操作,然后==是正确的:

[[ "$a" == alice ]] # quoting is not required, but is good practice. 
相关问题