4

vimsystem函数的文档说明了第二个参数:

当给出 {input} 时,这个字符串被写入一个文件并作为标准输入传递给命令。

我从中了解到的是,如果您的system电话看起来像这样:

call system('node something.js --file', 'here is some text')

执行的命令如下所示:

node something.js --file some/temp/file

并将some/temp/file文本here is some text作为其内容。为了测试这一点,我运行了 vim 命令(第二行是结果):

:echo system('cat', 'here is some text')
here is some text

好的,看起来不错。第二个测试:

:echo system('echo', 'here is some text')
<blank line>

我没有得到一些临时文件的名称,而是得到了一个空行。process.argv此外,当我在我的 node.js 脚本中打印时,我只得到['node', 'path/to/something.js', '--file'].

{input}关于如何使用论点,我缺少什么?为什么它似乎适用于cat,但不适用于echo我自己的脚本?

4

1 回答 1

4

你错了;执行的命令不是

node something.js --file some/temp/file

反而

echo "some/temp/file" | node something.js --file

或更好

node something.js --file < some/temp/file

如果您希望将文本作为参数传递,只需将其附加到system()(通过 正确转义shellescape())的第一个参数。

于 2013-03-22T21:00:57.547 回答