我有一個可以在我的計算機上運行的測試 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.app
或iTerm2.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
。