我已经看了一个小时了,但没有弄清楚问题是什么。 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 ]
还可以在变量扩展上使用双引号以避免分词和路径名扩展,但在这种情况下并不是绝对必要的$#
。