#!/bin/bash
if test "$#" == "4"; then echo "$*"; else echo "args-error" >&2; fi;
Этот небольшой фрагмент кода очень беспокоит меня, когда я пытался запустить его на Ubuntu и Cygwin.
Ubuntu работает под управлением bash версии 4.0+, тогда как Cygwin работает с 3.2.49; Но я считаю, что столкновение версий не должно быть причиной этого, этот код хорошо работает под Fedora 10, которая также использует версию 3 bash. +
Так что в основном мне интересно, есть ли способ закодировать мой скрипт раз и навсегда, чтобы не было этой ужасной проблемы позже.
Большое спасибо заранее.
Отредактировано: на данный момент у меня нет Cygwin вручную, но из моей памяти он говорит, что что-то вроде не может разрешить неопределенный токен "fi" что-то в этом роде.
Отредактировано: ну, оригинальная форма такая, только что найденная с сервера:
#!/bin/bash
if ["$#" == "4"];
then echo "$*";
else echo "args-error" >&2;
fi;
Консоль жалуется:
$ ./test.sh 1 2 3
./test.sh: line 2: [3: command not found
args-error
Мне также интересно, почему stderr говорит, что что-то идет не так - команда не найдена - но все еще может распечатать ответ?