gpt4 book ai didi

bash - 有没有办法在带有 Xcode 的 MacOSX 上使用 AppleScriptObjC 应用程序打包 bash shell 脚本?

转载 作者:行者123 更新时间:2023-11-29 09:48:27 26 4
gpt4 key购买 nike

我正在尝试使用 AppleScriptObjC 作为包装器来自动化三个或四个 bash shell 脚本。这将给我一个友好的 gui 前端来选择数据文件等,以及几个 bash 脚本的方便的文本文件操作和处理。

一切正常(我可以按我的按钮并运行 shell 脚本)除了我不知道如何让事情变得半便携。我想要一个可以分发给其他人的应用程序或程序包,所需的脚本文件以某种方式由应用程序合并或生成,而不是暴露给用户。

我是 Xcode 和 AppleScriptObjC (ASOC) 的菜鸟,我看不出这样做的方法。 - 我可以将脚本作为一组简单的 do shell 脚本命令运行,或者通过发送到终端窗口的命令来运行,但这意味着必须分发所有单独的 shell 文件并将其作为一堆片段放在正确的位置。 - 我曾尝试从 ASOC 内部生成脚本文件,但由于 ASOC 处理字符串和特殊字符的方式,我在构建文件时遇到了障碍。我已经尝试过普通字符串或字符串构造的引用形式。作为背景,Apple Technical Note TN2065是相关的。以这种方式创建文件会丢失特殊字符。此代码演示了问题(例如,我做错了什么!):

set scriptName to "/Users/me/Desktop/myScript.sh" -- Name of file
-- Define a multi line string:
set scriptContents to " First Line - OK
Second Line, all good so far
$Test fails - the (dollar sign)Test vanishes
\"$Test\" also fails
Last line"
do shell script ("cd " & myFolder & "; echo \" " & scriptContents & " \" > " & scriptName)

如果无法从 ASOC 中创建所需的 shell 脚本或访问脚本(如果作为支持文件包含在应用程序包中),我将做很多从 bash 到 AppleScriptObjC 的棘手移植!

建议或解决方案将不胜感激地接受:1. 如何使用 AppleScriptObjC 编写任意多行文件,包括控制字符等。2. 或3. 如何打包shell脚本,让ASOC在需要的时候运行?

最佳答案

回答我自己的问题,经过几个小时的研究和实验(感谢 macscripter.net 和 autodidaktos.com 上的各种帖子):

  1. 通过菜单 File - Add Files to (yourProject)...将脚本文件(例如 yourScriptFile.sh)添加到项目中

  2. 将脚本文件包含在应用程序包中,以便在分发时将其包含在应用程序中:

    • 在项目导航器或跳转栏中选择您的项目
    • 选择“构建阶段”选项卡
    • 展开“复制捆绑资源”部分(这适用于 Xcode 4.6.3,可能与其他版本不同)
    • 通过单击列表底部的“+”按钮将项目添加到 Bundle Resources
    • 选择要添加到包中的脚本文件,例如 yourScriptFile.sh
  3. 在您的 AppleScriptObjC 脚本中,添加以下子例程

    on applicationWillFinishLaunching_(aNotification)
    set pathToResources to (current application's class "NSBundle"'s mainBundle()'s resourcePath()) as string
    end applicationWillFinishLaunching_
  4. 同样在您的 AppleScriptObjC 脚本中,在适当的地方添加以下内容:

    property pathToResources : "NSString"  -- works if added before script command
  5. 在适当的情况下,还在您的 AppleScriptObjC 脚本中添加以下内容:

    set yourScript to pathToResources & "/yourScriptFile.sh" 
    -- gives the complete unix path
    -- if needed, you can convert this to the Apple style path:
    set yourScriptPath to (((yourScript as text) as POSIX file) as alias)`
  6. 顺便说一句,您可以使用以下命令打开文件进行读取

    tell application "Finder"
    open yourScriptPath
    end tell

然后应该可以使用do shell script 构造执行脚本或将其复制到某处以供用户访问。如果合适,还应该可以直接从包中执行脚本。

关于bash - 有没有办法在带有 Xcode 的 MacOSX 上使用 AppleScriptObjC 应用程序打包 bash shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com