我正在尝试使用automator创建一个Mac“应用程序”,它基本上会调用.command文件来完成所有工作。该命令文件将与.app位于同一目录中,但我倒是第一个-获取单击以确定.command文件位置的.app文件的当前目录。
我尝试过
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-基本上是因为,如果以这种方式进行操作,终端实际上不会弹出。这个演示是我需要做的。
答案 0 :(得分:0)
由于您没有包含另存为应用程序的 Automator 工作流程的明确详细信息,因此,我以以下示例为例和 Automator 应用的使用方式,例如 my.app ,执行例如 my.command 脚本文件,该文件与例如 my.app 是。
在此示例中,我在台式机上创建了一个名为 foo 的文件夹,其中 my.app < / strong>与 my.command 脚本文件一起保存。
自动化器 应用程序工作流程使用运行AppleScript 动作来实现目标。
使用以下示例 AppleScript 代码替换默认的 code :
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.command
更改为实际的文件名。 示例 AppleScript 代码的其余部分无需修改。如果启动了 my.app ,并且 my.command 脚本文件不在同一文件夹中为 my.app ,则将显示错误消息,例如:
如果启动了 my.app ,并且 my.command 脚本文件没有其可执行位 >设置,则将显示此错误消息,例如:
此外,如果 my.command 脚本文件没有正常退出,它也会显示错误消息,例如:
注意:示例 AppleScript 代码就是这样,并且不包含任何其他 error 适当处理。用户有责任添加适当的,需要的或想要的任何错误处理。看看try中的error 声明和AppleScript Language Guide 声明。另请参见Working with Errors。