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 shell 進行編寫。如果您只想擁有彼此更相容的 BASH 版本...

安裝自製在 Mac 上使用Terminal.appiTerm2.app。並使用 Homebrew 安裝 BASH ( brew install bash)。然後在 Mac 上更改您的 shell:chsh -s /usr/local/bin/bash。登出。登入。這不會節省對當前腳本的一些重寫,但幾乎肯定會消除新腳本的問題。

Mac 本地的腳本也可以#!/usr/local/bin/bash在不更改 shell 的情況下使用。

您可能還需要安裝 Xcode 才能從 Homebrew 編譯軟體。如果您在安裝 Xcode(從 App Store)後尚未完成此操作,請安裝 Xcode 的命令列工具xcode-select --install

相關內容