我有一個在 Ubuntu 虛擬機上運行良好的作業腳本。我最近切換到 MacOS,在嘗試運行相同的腳本時出現以下錯誤:
danyateran@MacBook-Air-Danya:~/restorator$ ./restorator.sh -V
/Users/danyateran/restorator/bin/functions.sh: line 1568: syntax error near unexpected token `>'
/Users/danyateran/restorator/bin/functions.sh: line 1568: ` ssh_conn "${SOURCE_SERVERNAME}" 'exec 2>&1; whmapi1 fetch_ssl_certificates_for_fqdns domains='${ssl_host}'; exit' &>> "${TMP_TRANSFER_DIR}/ssl_info_${ssl_host}.txt"'
雖然語法看起來不錯,而且據我所知 MacOS 與 Linux 具有相同的行尾,但我不知道可能有什么問題。任何輸入都非常感謝。
uj5u.com熱心網友回復:
&>>將標準輸出和標準錯誤附加到同一檔案的語法是在 bash 版本中引入的4.0。MacOS 附帶 bash 版本3.2。
您可以將其更改為更便攜的語法:
>> "${TMP_TRANSFER_DIR}/ssl_info_${ssl_host}.txt" 2>&1
這是同樣的事情,但會被 bash v3.2(和更新的,和sh)理解。
但是,腳本中可能還有其他不兼容的內容,例如關聯陣列、mapfile內置、各種 shell 選項等。
您可以安裝較新版本的 bash。當前版本是5.1.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360647.html
