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。ログアウトしてください。ログイン。現在、macOS / OS XでBASH 4.4を使用できます。これは、使用している他のBASHバージョンとはるかに互換性があります。これにより、現在のスクリプトを再構築することは減りませんが、新しいスクリプトの問題はほとんど確実に排除されます。

#!/usr/local/bin/bashMacの基本スクリプトは、シェルを変更せずに使用することもできます。

Homebrewでソフトウェアをコンパイルするには、Xcodeをインストールする必要があるかもしれません。 App StoreにXcodeをインストールした後にこれを行っていない場合は、Xcodeのコマンドラインツールをインストールしてくださいxcode-select --install

おすすめ記事