Я смотрю на это уже час, не понимая, в чем проблема. Оператор else по какой-то причине не работает.
#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi
решение1
Проблема в строке:
if [ $#=3 ]
Так как вокруг нет пробелов =
, то это обязательно:
if [ -n $#=3 ]
тест, который всегда будет истинным, поскольку =3
всегда присутствует, следовательно, else
никогда не сработает.
Вам необходимо использовать пробелы вокруг =
:
if [ $# = 3 ]
Также используйте двойные кавычки при расширении переменных, чтобы избежать разбиения слов и расширения имени пути, хотя в данном случае это не является строго обязательным $#
.