I am playing around with GitHub's Hubot, and I try to execute a bash script inside my robot work.
I succeed executing my script, but cannot get it working if I add some arguments to this script.
{ spawn } = require 'child_process'
s = spawn './myScript.sh' + " url" + " title" <------- doesn't work due to args
s = spawn './myScript.sh' <------- alright without args
s.stdout.on 'data', ( data ) -> console.log "Output: #{ data }"
s.stderr.on 'data', ( data ) -> console.error "Error: #{ data }"
s.on 'close', -> console.log "'s' has finished executing."
How do I pass arguments to my script ?
Thanks for help
I am playing around with GitHub's Hubot, and I try to execute a bash script inside my robot work.
I succeed executing my script, but cannot get it working if I add some arguments to this script.
{ spawn } = require 'child_process'
s = spawn './myScript.sh' + " url" + " title" <------- doesn't work due to args
s = spawn './myScript.sh' <------- alright without args
s.stdout.on 'data', ( data ) -> console.log "Output: #{ data }"
s.stderr.on 'data', ( data ) -> console.error "Error: #{ data }"
s.on 'close', -> console.log "'s' has finished executing."
How do I pass arguments to my script ?
Thanks for help
-
You could say
spawn "./myScript.sh #{url} #{title}"
but that would leave you open to all sorts of unpleasant quoting and injection problems. Never ever use the single argument form ofspawn
,system
, or similar "launch a shell to do things for me" mands, there's almost always a multi-argument form that bypasses the shell pletely. Aurélien's answer is the right way. – mu is too short Commented Feb 17, 2014 at 14:18
1 Answer
Reset to default 8As explained in the documentation:
http://nodejs/api/child_process.html#child_process_child_process_spawn_mand_args_options
Spawn take, as second parameter, an array made of your different arguments. It would look like this:
s = spawn './myScript.sh', [url, title]
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742296867a4417301.html
评论列表(0条)