运行 shell 有很多参数的命令
Run shell command with many arguments
我有一个很长的命令,有很多参数,但不知何故它没有按应有的方式工作。以下 knife
命令将连接到远程 vCenter 并创建一个名为 node1
的虚拟机。如何将以下命令和 运行 包装在 ruby 中?难道我做错了什么?
var_name = 'node1'
var_folder = 'folder1'
var_datastore = 'datastore1'
var_template_file = 'template_foo'
var_template = 'foo'
var_location = 'US'
cmd = 'knife vsphere vm clone var_name --dest-folder var_folder --datastore var_datastore --template-file var_template_file --template var_template -f var_location'
system(cmd)
变量未在您的命令中解析。尝试对变量 cmd
中的所有变量使用 #{var_name} 等
require 'shellwords'
cmd = "knife vsphere vm clone #{var_name.shellescape} --dest-folder #{var_folder.shellescape} --datastore #{var_datastore.shellescape} --template-file #{var_template_file.shellescape} --template #{var_template.shellescape} -f #{var_location.shellescape}"
在您的特定情况下,即使没有 shellescape
,它也能正常工作,但安全总比遗憾好。
我有一个很长的命令,有很多参数,但不知何故它没有按应有的方式工作。以下 knife
命令将连接到远程 vCenter 并创建一个名为 node1
的虚拟机。如何将以下命令和 运行 包装在 ruby 中?难道我做错了什么?
var_name = 'node1'
var_folder = 'folder1'
var_datastore = 'datastore1'
var_template_file = 'template_foo'
var_template = 'foo'
var_location = 'US'
cmd = 'knife vsphere vm clone var_name --dest-folder var_folder --datastore var_datastore --template-file var_template_file --template var_template -f var_location'
system(cmd)
变量未在您的命令中解析。尝试对变量 cmd
中的所有变量使用 #{var_name} 等require 'shellwords'
cmd = "knife vsphere vm clone #{var_name.shellescape} --dest-folder #{var_folder.shellescape} --datastore #{var_datastore.shellescape} --template-file #{var_template_file.shellescape} --template #{var_template.shellescape} -f #{var_location.shellescape}"
在您的特定情况下,即使没有 shellescape
,它也能正常工作,但安全总比遗憾好。