ruby - 使用适当的参数转义从 ruby​​ 在后台执行 shell 命令

标签 ruby shell background escaping

我必须在后台运行一个命令,但我想对其参数进行适当的转义。

system("rake send_mails subject='#{params[:subject]}' 2> /dev/null 1> /dev/null &");

如果我写 system("rake", "send_mails", params[:subject]) 那么我没有重定向的“位置”和 &符号。如果我不这样做,我就没有对 subject 参数进行转义。

我该如何解决?

最佳答案

在 Ruby 1.9 中,尝试 Process.spawn :

# Spawn a new process and run the rake command
pid = Process.spawn({"subject" => params[:subject]},
                    "rake", "send_mails",
                    :out => 'dev/null', :err => 'dev/null')

# Detach the spawned process
Process.detach pid

关于ruby - 使用适当的参数转义从 ruby​​ 在后台执行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949008/

相关文章:

ruby - 如何在 Ruby Sequel 任意 sql 运行中查找列名

ruby-on-rails - 在 url_for 中使用过期时的 Amazon S3 无效日期

ruby-on-rails - Ruby 方法和可选参数

Android - Soundpool 不会在后台播放许多应用程序的所有声音。

c# - 当应用程序未处于焦点或位于另一个选项卡中时,WaitForSeconds 停止工作

ruby-on-rails - 为什么 foreign_key 被忽略了?

linux - 除了使用正则表达式之外,如何在 shell 中忽略或排除备份文件 [以 ~ 结尾的文件]?

bash - 如何通过 shell/bash 检测 386、amd64、arm 或 arm64 操作系统架构

linux - 附加到 shell 中具有特定键的行

Android空白布局出现在背景图片之前