我正在尝试使用自动程序创建Mac“ app”,该程序基本上会调用.command文件来完成所有工作。命令文件将与.app放在同一目录中,但我排在第一个-是获取.app文件的当前目录,单击该目录可确定.command文件的文件位置。
我已经尝试过
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
echo "-- $SCRIPTPATH"
这只是返回我的用户总监-基本上〜该应用程序本身位于桌面示例的目录中:〜/ Desktop / foo / my.app
我也尝试过
here="`dirname \"$0\"`"
echo "cd-ing to $here"
cd "$here" || exit 1
都不起作用。
最终,我需要调用my.command
来运行该命令,但需要知道其实际位置-甚至相对于该应用程序,这样它才会触发。目前,我收到一个错误消息,因为它不在我的用户帐户的根目录中,所以找不到my.command(因为我无法控制它在最终用户计算机上的放置位置)。
关于我可以做什么来解决这个问题的任何建议。
[注:要回答-为什么我要使用一个具有终端脚本的应用程序来调用本质上是脚本的.command?-基本上是因为,如果以这种方式进行操作,终端实际上不会弹出..为此演示是我需要做的。
由于您未包含另存为应用程序的Automator workflow的明确详细信息,因此,我以以下内容作为示例来说明如何实现和Automator应用程式,例如my.app,执行例如my.command 脚本文件,与例如my.app是。出于示例目的,我在 Desktop Automator 示例set myCommandFilename to "my.command"
set myAppPathAlias to path to me
tell application "System Events"
set myDirName to POSIX path of container of myAppPathAlias
set myCommandFilePathname to myDirName & "/" & myCommandFilename
set myCommandFilenameExists to exists file myCommandFilePathname
end tell
if myCommandFilenameExists then
try
do shell script myCommandFilePathname's quoted form
on error eStr number eNum
display dialog eStr & " number " & eNum ¬
buttons {"OK"} default button 1 ¬
with title "File I/O Error..." with icon stop
end try
else
display dialog "A necessary file, ' " & myCommandFilePathname & ¬
"', is missing!" buttons {"OK"} default button 1 ¬
with title "Missing File..." with icon stop
end if
如果启动了[[my.app]],并且
my.command
脚本文件与my.app不在同一个文件夹中,则会出现错误消息将会显示,例如:如果启动了my.app
,并且没有设置my.command
脚本文件,则将显示此错误消息,例如: 此外,如果my.command脚本文件
没有干净退出,它也会显示错误消息,例如:,其编码方式和失败方式。此示例是最坏的情况,因为它使您知道失败的原因,而不是失败的原因。AppleScript