0

我从 nodejs 发送数据到预期的小问题。我有一个shell(期望脚本)和nodejs script.here。

var sys = require('sys');
var spawn = require('child_process').spawn;
var cons = spawn('./some_shell_script', argv=[arqs...]

以这种方式一一声明参数["arg1":"value1", "arg2":"value2"]

这是我的 some_shell_script:

#! /usr/bin/expect
spawn -noecho o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@111.111.111.111 {*}$arg

问题是这样的。ssh 删除所有引号,并且有必要在 ssh 请求中获取引号中的这个 args 是否有另一种方法可以从 nodejs 传输数据以期望,或者我如何在不这样做的情况下制作转义引号 \\?

4

1 回答 1

0

参数必须是数组而不是键值对。您正在调用的脚本必须具有解码参数的逻辑。例如

var spawn = require('child_process').spawn,
    ls    = spawn('ls', ['-lh', '/usr']);

//calls ls -lh /usr which decodes the options itself

您可以直接调用该过程并传递参数,并从脚本本身中提取参数,例如

spawn('script', ['opt1', 'opt2']);

在脚本内部,您可以使用 $n 表示法访问参数,如下所示:

$0 #zeroth argument ='script'
$1 #first argument ='opt1'
$2 #second argument ='opt2'
$@ #array of all arguments
于 2013-10-17T16:48:55.090 回答