简单的 if/else 不起作用

简单的 if/else 不起作用

我已经看了一个小时了,但没有弄清楚问题是什么。 else 语句由于某种原因不起作用。

#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi

答案1

问题出在这一行:

if [ $#=3 ]

由于 周围没有空格=,因此它必然会执行以下操作:

if [ -n $#=3 ]

test 始终为真=3,因此else永远不会被触发。

您需要在周围使用空格=

if [ $# = 3 ]

还可以在变量扩展上使用双引号以避免分词和路径名扩展,但在这种情况下并不是绝对必要的$#

相关内容