Скрипт sh работает нормально на моем компьютерном терминале, но выдает ошибки на удаленном сервере

Скрипт sh работает нормально на моем компьютерном терминале, но выдает ошибки на удаленном сервере

У меня есть этот тестовый скрипт sh, который я могу запустить на своем компьютере, который, как предполагается, не выводит ничего, если все работает. Я использовал scp для передачи всего в папке, в которой я работаю, на удаленный сервер, и когда я запускаю его на удаленном сервере, я получаю ошибки типа

egrep: Unmatched ) or \)
egrep: Unmatched ) or \)
./script.sh: line 229: ./helperScripts/script2.pl: No such file or directory

На моем компьютере этих ошибок не было, и когда я проверяю, есть ли script2.pl в helperScripts, он там есть.

Когда я запускаю sh -version на удаленном сервере, я получаю

GNU bash, version 4.1.2(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Когда я запускаю sh -version на терминале моего компьютера, я получаю

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

Я не знаю, имеет ли это значение. Кто-нибудь знает, что я могу сделать? Я бы предпочел не переписывать вещи в моем сценарии, потому что я пытался это сделать, и, похоже, все больше проблем возникает, когда я делаю новые сценарии.

решение1

Это не такнуждатьсяиметь значение, но да, этоможетимеет значение, в зависимости от того, как вы пишете. И вы не предоставили скрипт, чтобы кто-то мог указать, как писать для любой оболочки Bourne. Если вы просто хотите иметь версии BASH, которые более совместимы друг с другом...

УстановитьДомашнее пивона вашем Mac с помощью Terminal.appилиiTerm2.app. А с Homebrew установите BASH ( brew install bash). Затем измените оболочку на Mac: chsh -s /usr/local/bin/bash. Выйдите из системы. Войти. Сегодня это дает вам BASH 4.4 на macOS/OS X, который гораздо более совместим с другими версиями BASH, которые у вас есть. Это не избавит от необходимости переписывать текущие скрипты, но почти наверняка устранит проблемы с новыми скриптами.

Скрипты, локальные для Mac, также можно использовать #!/usr/local/bin/bashбез изменения оболочки.

Вам также может потребоваться установить Xcode для компиляции программного обеспечения из Homebrew. Если вы не сделали этого после установки Xcode (из App Store), установите инструменты командной строки Xcode с помощью xcode-select --install.

Связанный контент