2013-10-17 23 views
0

我從發送nodejs數據到期望的小問題。 我有一個shell(期望腳本)和nodejs script.here它是。將數據從nodejs傳輸到shell(期望)

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 [email protected] {*}$arg 

的問題是。 ssh刪除所有引號,有必要得到這個參數在ssh請求 是否有另一種方式來從nodejs傳輸數據期望,或者我怎麼能做出逃避報價而不做這樣的\\?

回答

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' 
[email protected] #array of all arguments 
+0

我需要發送帶引號的參數,比如「arg1」 – Barterio

+0

然後您應該用參數'「\」opt1 \「」'來引用引號。或者使用不同的引號'[''opt1'',''opt2'']' – user568109

+0

這不是一種解決問題的方法,以逃避所有引用。有很多的爭論,並逃避所有這些 - 糟糕的主意。你能否告訴我另一種方式來從nodejs轉移整個「輸入」行以期望? – Barterio