【问题标题】:The Linux script does not run on MacOSLinux 脚本无法在 MacOS 上运行
【发布时间】:2021-12-29 09:38:27
【问题描述】:

我有一个在 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 具有相同的行尾,但我不知道可能出了什么问题。非常感谢任何意见。

【问题讨论】:

  • 您可以通过在每行的开头放置四个空格来正确格式化代码。或者对内联代码使用反引号:`code` 变为 code。

标签: linux bash macos shell script


【解决方案1】:

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

【讨论】:

  • 谢谢你,我一直在努力解决这个问题,你的帮助让我很开心
猜你喜欢
  • 2020-04-01
  • 1970-01-01
  • 2023-03-13
  • 2022-10-05
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多