Linux 脚本在 MacOS 上不 运行

The Linux script does not run on MacOS

我有一个工作脚本,在 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 相同,但我不知道哪里出了问题。非常感谢任何意见。

在 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.