0

nodejsから期待するデータを送信する際に小さな問題があります。私はシェル(スクリプトを期待)とnodejs script.hereを持っています。

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

引数は、そのように 1 つずつ宣言されます["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 リクエストで取得する必要があります。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 に答える