我有一个执行shell脚本的ruby脚本。如何将shell脚本数据传递回ruby脚本。
var newUser = new User({
first_name : req.body.first_name,
last_name : req.body.last_name,
user_name : req.body.user_name,
email : req.body.email,
password : req.body.password,
password_confirmation : req.body.password_confirmation,
create_date : d.toLocaleString()
});
newUser.save(function(err) {
if (err){
//console.log(err);
components.Error.normalize(err,function(returnData) {
//console.log(returnData);
res.status(207).json({status:0,error:returnData});
});
}else{
res.status(200).json({status:1,message:'User saved successfully'});
}
});
我可以使用从ruby到shell脚本的环境变量来执行相反的方案。
desc "Runs all the tests"
lane :test do
sh "../somescript.sh"
print variables_inside_my_script // i want to access my script data here.
end
由于
答案 0 :(得分:2)
不清楚 variables_inside_my_script 在这里应该是什么意思,但作为一项规则,操作系统不允许将变量从子shell“导出”到父级,因此rubyists经常调用子命令使用反引号(或等效),以便父级可以读取子shell的输出(stdout),例如
output = %x[ ls ]
根据您的真实需要,有其他可能有用的技术 - 例如。
答案 1 :(得分:1)
如果shell脚本在您的控制之下,请让脚本将Ruby语法中的环境定义写入STDOUT。在Ruby中,您eval
输出:
eval `scriptsettings.sh`
如果您的脚本生成其他输出,请将环境定义写入临时文件并使用load
命令读取它们。