我是Shell Programming的初学者。当我执行一个关于if语句的程序时,我很困惑 代码如下
echo -n "word 1:"
read word1
echo -n "word 2:"
read word2
if test "$word1"="$word2"
then echo "Match"
fi
我发现无论我是否输入相同的字符串,它总是打印“匹配”
这就是我想问的问题,谢谢!
答案 0 :(得分:1)
在=
周围添加空格:
if test "$word1" = "$word2"
没有它们,您在表达式test
上使用"$word1"="$word2"
来测试它是否为空。
来自man test:
-n STRING
STRING的长度非零
STRING
相当于-n STRING
完全清楚:首先,$word1
和$word2
被变量的内容替换,比如说hello
和world
是原创的,所以你得到字符串hello=world
。所以,无论你将在这些变量中加入什么,你都会得到一个非空字符串(因为=
),因此测试将始终通过。