我使用osascript(js)在Alfred工作流程中编写了一些脚本。众所周知,console.log
在将日志回显到stdout后将留下一个undefined
,我们无法使用它将结果传递给工作流输出,例如clipboard
。然后我发现我可以使用eval或只运行一个表达式以将某些东西传递给stdout。但是我们知道它将为标准输出添加换行符。然后,我得到的结果是换行符,这是附加的。这不是解决我的问题的完美方法。还有其他决议吗?
代码的功能可以忽略。只需关注如何在没有换行符拖尾的情况下进行回显即可。谢谢。
最佳答案
我找不到使用osascript(JS)做到这一点的方法。但是还有另一种方式。
将脚本语言从osascript(JS)更改为bash。
脚本:获取osascript的结果,修剪多余的换行符。
osascript -l JavaScript process.js "{query}" | tr -d '\n'
将您的代码解析为工作流文件夹中的process.js。添加代码以从命令行读取参数。 (特别感谢mikaelbr/node-osascript)
var app = Application.currentApplication();
app.includeStandardAdditions = true;
ObjC.import('Cocoa');
var args = ObjC.deepUnwrap($.NSProcessInfo.processInfo.arguments).slice(4);
var query = args[0].split(' ');
var set1 = query[0].split(',');
var set2 = query[1].split(',');
var res = set1.filter(function (id,index){
return set2.indexOf(id) != -1;
})
res.join(query[2] || ',')