下面是我的脚本,我没有得到正确的输出,我输入爱丽丝我得到鲍勃作为输出,但是当我打字鲍勃我应该得到爱丽丝作为输出,但我我得到鲍勃作为输出。请让我知道什么是在我的脚本错误脚本错误,没有得到正确的输出
#!/bin/bash
echo "Enter your name"
read a
if [ $a==alice ];
then
echo "bob"
elif [ $a==bob ];
then
echo "alice"
else
echo "STDERR"
fi
下面是我的脚本,我没有得到正确的输出,我输入爱丽丝我得到鲍勃作为输出,但是当我打字鲍勃我应该得到爱丽丝作为输出,但我我得到鲍勃作为输出。请让我知道什么是在我的脚本错误脚本错误,没有得到正确的输出
#!/bin/bash
echo "Enter your name"
read a
if [ $a==alice ];
then
echo "bob"
elif [ $a==bob ];
then
echo "alice"
else
echo "STDERR"
fi
你应该把空间周围的==
运营商,以便它的[
一个三个参数的形式。
没有空格,它使用单参数表单,如果字符串长度不为零(如字符串bob==alice
),则为true。
错误的语法应该是'[[$ a == alice]]'或'测试“$ a”= alice' – 2014-09-01 06:37:33
更正致谢@ DavidC.Rankin – klashxx 2014-09-01 06:58:05
空间。当使用[
操作人员或使用关键字test
,你将要使用的=
POSIX标准和可移植性:
[ "$a" = alice ] # remember to quote your variable when comparing strings
虽然==
是许可与[
或test
,你将失去便携性。另外,如果你使用的是[[
操作,然后==
是正确的:
[[ "$a" == alice ]] # quoting is not required, but is good practice.
你需要周围的空间''==。 '如果[[''操作符被使用,否则'['$ a“= alice]]' – 2014-09-01 06:13:00