脚本错误,没有得到正确的输出

时间:2014-09-01 06:03:07

标签: bash

下面是我的脚本,我没有得到正确的输出,我正在输入alice我得到bob作为输出,但当我输入bob我应该得到alice作为输出,但我得到bob作为输出。请告诉我脚本中的错误

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

3 个答案:

答案 0 :(得分:2)

语法错误,应该是:

[[ $a == alice ]]

检查:http://tldp.org/LDP/abs/html/comparison-ops.html

答案 1 :(得分:1)

您应该在==运算符周围添加空格,以便它是[的三参数形式。

没有空格,它使用单参数形式,如果字符串长度非零(与字符串bob==alice一样),则表示true。

答案 2 :(得分:0)

==表达式周围需要空格。使用[测试运算符或使用关键字test时,您需要使用=进行posix合规性和可移植性:

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

虽然== 允许 [test,但您将失去可移植性。或者,如果您使用[[运算符,则==是正确的:

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