有,为什么你有一个理由将shell脚本存储在单独的文件中?通常情况下,您可以将它内联在AppleScript代码中。据我所知,“do shell脚本”命令只能对文本进行操作,而不能对文件路径上的脚本进行操作。如果给它一个包含路径的变量,它将尝试将该路径作为命令运行。它不会将该文件的内容作为命令运行。
这里是运行一个内嵌的shell脚本,并把结果在文本编辑一个AppleScript的例子:
property theShellScript : "#!/bin/bash
echo Hello World"
tell application "TextEdit"
activate
set theScriptResult to do shell script theShellScript
make new document
set the text of document 1 to theScriptResult
end tell
...你当然可以用自己的shell脚本的内容替换上面的shell脚本。
如果您确实需要将脚本保存在单独的文件中,那么最好的方法是将AppleScript保存为应用程序,然后将shell脚本放在Application捆绑包中。 “我的路径”是运行脚本的应用程序的路径 - 而不是脚本本身 - 但是如果您将AppleScript保存为应用程序,那么它会运行自己的脚本,并且“我的路径”与您最初一样工作预期。
这里是运行包含在存储它自己的应用程序包内的文件内的外壳脚本一个AppleScript的例子:
property theApplicationPath : the path to me as text
property theShellScriptPath : theApplicationPath & "Contents:Resources:Scripts:bash.sh"
tell application "TextEdit"
open alias theShellScriptPath
set theShellScript to the text of document 1
set theScriptResult to do shell script theShellScript
make new document
set the text of document 1 to theScriptResult
end tell
根据上述脚本复制/粘贴到在AppleScript的编辑一个新的文档,按住Option键并选择文件▶另存为,然后在保存对话框的文件格式弹出菜单中选择“应用程序”,当然给你的应用程序一个名字并点击保存。然后在Finder中,导航到您保存应用程序的位置,并在应用程序中双击(或右键单击),然后选择“显示软件包内容”。这会将您的应用程序作为文件夹打开,从而将文件系统暴露在内。把你的shell脚本文件命名为“bash”。sh“放入应用程序内的”Contents/Resources/Scripts“文件夹内,然后关闭代表您的应用程序的窗口。
现在,当您从文件系统中的任何位置运行应用程序时,它仍然能够查找并运行其合并的shell脚本。
将脚本保存为应用程序是否有所作为? – Vic