Я использую сервер remot под управлением Ubuntu 13.10 с установленным Bash 4.2.45. Моя домашняя система - OS X Mavericks с установленным Bash 3.2.51 (сборка Darwin). В прошлом я почти не использовал bash, но я работал над довольно большим сценарием и заметил несколько странных вещей в версии, установленной на удаленном сервере.
Возьмите простой скрипт, например:
#!/bin/sh
read n
if ((n > 10)); then
echo "Number is pretty big"
else
echo "NUMBER IS WEAK AND SMALL"
fi
В то время как в bash 3.2.51 он распознает выражение и работает под bash 4 в Ubuntu, он выдает странную ошибку:
script.sh: 5: script.sh: n: not found
Но не только ((...)) Не распознаются, но иногда переменные и другие логические утверждения. Как новичок в bash, это очень сбивает с толку, и я хотел спросить, что я могу с этим поделать. Могу ли я изменить правила синтаксиса? Или просто понизить версию удаленного сервера до версии 3.xy? Любая помощь приветствуется.