Tra*_*ggs 4 python macos shell automator
我有一个python脚本,我希望能够将文件拖放到.所以我把它包装在Automator应用程序中.所述应用程序有一个单独Run Shell Script的内容,看起来像:
export PATH=${PATH}:/usr/local/bin:/usr/local/CrossPack-AVR/bin
cd /Applications/MyApp
/Applications/MyApp/doIt.py "$1"
Run Code Online (Sandbox Code Playgroud)
这有效.我的python脚本运行时$1显示在其中sys.argv[1].所述脚本虽然产生了相当多的输出.我想打开一些显示输出的窗口.我不介意用户是否必须关闭它.我没有看到任何Automator行动那样做.我试过做类似的事情:
open -a Terminal /Applications/MyApp/doIt.py "$1"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎并没有继承环境.它也没有$1交给python脚本,但也尝试打开它.
所以我正在寻找一种方法,打开一些东西(终端或其他),它可以捕获并滚动该脚本运行时的stdout,就像在脚本中调用一样.
在Automator中,参数和变量可以使用特殊变量传递:
$@
Run Code Online (Sandbox Code Playgroud)
要从Automator中运行的脚本或任务获取输出,您可以单击脚本下方的结果(隐藏按钮)以查看任何输出.此外,您可以设置另一个bash脚本以将输出传递给stdout或您选择的任何其他位置.
此示例显示了将输出和变量发送到bash脚本的python脚本.您可以将输入作为参数传递给stdin:

我不在我的 Mac 上,所以这还没有经过测试,但我很确定它可以通过细微的编辑来工作......
更改您的脚本,使其看起来像这样,并且您的 python 脚本在后台运行,将其输出保存到临时文件中$$.tmp,其中$$是您的进程 ID (pid):
export PATH=${PATH}:/usr/local/bin:/usr/local/CrossPack-AVR/bin
cd /Applications/MyApp
/Applications/MyApp/doIt.py "$1" > $$.tmp &
Run Code Online (Sandbox Code Playgroud)
现在在末尾添加以下行,以便您 1) 创建一个跟踪日志文件的脚本,2) 使其可执行,3) 执行它:
echo "tail -f $$.tmp" > x.command
chmod +x x.command
open x.command
Run Code Online (Sandbox Code Playgroud)
我建议重命名x.command为,$$.command以便您可以从多个用户多次运行它,而无需各个用户之间的交互。使用后还应清理并删除临时文件。