从 Xcode 运行时,Shell 脚本不会完全执行

Posted

技术标签:

【中文标题】从 Xcode 运行时,Shell 脚本不会完全执行【英文标题】:Shell script won't fully execute when running from Xcode 【发布时间】:2021-04-23 16:26:53 【问题描述】:

你好:) 我正在尝试实现一个新的 xcode 行为,它在当前打开的 Xcode 文件上运行 swiftlint 的自动更正。如果我从终端运行脚本,它工作得很好,但是,如果我通过 xcodes 行为执行脚本,所有脚本都会执行,除了 swiftlint 部分(当我尝试将输出打印到文件时,它只输出一个空行)。我确实设置了 chmod u+x 的权限,所以我认为应该没问题。也许有人可以帮我弄清楚是什么原因?我似乎走到了死胡同,找不到有类似问题的人:(

这是我的脚本:

#!/bin/sh
fileName=$(osascript <<END
tell application "Xcode"
    set t to name of front window
    set o to offset of " — " in t
    if o > 0 then set t to text 1 thru (o - 1) of t
    return t
end tell
END)

fullPath=$(find . -name "$fileName")
swiftlint autocorrect --path $fullPath

这使用 AppleScript 从 Xcode 中提取当前活动的文件,然后在其上运行 swiftlint。

提前致谢

【问题讨论】:

【参考方案1】:

有趣的是,我在发布问题几分钟后找到了解决方案。

问题是 Xcode 无法识别 swiftlint 命令,因此我将其替换为完整路径,它可以正常工作!:)

【讨论】:

以上是关于从 Xcode 运行时,Shell 脚本不会完全执行的主要内容,如果未能解决你的问题,请参考以下文章

shell-脚本的执行

在 FirebaseCrashlytics 的构建阶段运行脚本中上传符号时,Xcode 构建永远不会完成

Xcode 自定义 shell 脚本正在减慢编译时间

Xcode 9.2 Shell 脚本调用错误

iOS 制作自动打包脚本 Xcode8.3.2

“运行 3 个自定义 shell 脚本中的 2 个”Xcode 8.2