如何在 alfred 的“运行 脚本”工作流程中使用 osascript 回显没有换行符的内容?

how can I echo something without newline with osascript in `run script` workflow in alfred?

我用 osascript(js) 在 alfred 工作流程中写了一些脚本。正如我们所知,console.log 将在将日志回显到标准输出后留下一个 undefined,我们不能使用它来将结果传递给像 clipboard 这样的工作流输出。然后我发现我可以使用 eval 或 运行 表达式将某些内容传递给标准输出。但我们知道它会在标准输出中添加一个换行符。然后,我得到了一个带有换行符的结果,这是额外的。这不是解决我的问题的完美方法。还有其他决议吗?

代码的功能可以忽略。只关注如何在没有换行尾的情况下回显。谢谢。

我找不到使用 osascript(JS) 来执行此操作的方法。但还有另一种方法。

  1. 将脚本语言从 osascript(JS) 更改为 bash。
  2. 脚本:获取您的 osascript 的结果,trim 额外的换行符。

    osascript -l JavaScript process.js "{query}" | tr -d '\n'
    
  3. 将您的代码解析到工作流文件夹中的 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] || ',')
    

Alfred 3.0 现在有 "Trim Whitespace" transform。您可以在右键单击 > 实用程序 > 转换下找到它。