我想在JavaScript for Automation (JXA) 中启动一个子进程,并将一个字符串发送到该子进程的标准输入,其中可能包括换行符、shell 元数据等。以前的 AppleScript 方法使用 bash 的<<<
运算符、字符串连接和quoted form of
字符串。如果有一个quoted form of
我可以信任的 JavaScript 等价物来获取所有边缘情况,我可以使用相同的方法;为此,我正在研究正则表达式方法。
但是,我想既然我们可以unistd.h
从 JXA 访问,为什么不尝试直接调用$.pipe
,$.fork
和$.execlp
呢? $.pipe
看起来它应该将一个包含 2 个整数的数组作为其参数,但我尝试过的所有方法都不起作用:
ObjC.import('unistd')
$.pipe() // Error: incorrect number of arguments
$.pipe([]) // segfault
$.pipe([3,4]) // segfault
$.pipe([$(), $()]) // segfault
var a = $(), b=$()
$.pipe([a,b]) // segfault
$.pipe($([a,b])) // NSException without a terribly helpful backtrace
$.pipe($([$(3), $(4)])) // segfault
var ref = Ref('int[2]')
$.pipe(ref)
ref[0] // 4, which is close!
有什么建议么?