下面是我的脚本,我没有得到正确的输出,我正在输入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
答案 0 :(得分:2)
答案 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.