繁体   English   中英

如何在shell中将ruby变量传递给sed命令?

[英]How to pass ruby variable into sed command in Shell?

这是我的代码。 我想抓住p的值并在匹配1时将其插入到文件changed.txt中。但它没有做我想做的事情,似乎它不知道#{p}是什么

Net::SSH.start( "192.168.2.1", "root", :password => "password") do |ssh|
    p = ssh.exec! "java -cp /var/lib/sonar/dev-tools.jar au.com.Tool test"
#   puts #{p}
    ssh.exec! "sed 's/1/#{p}/g' changed.txt"
end

以你拥有它的方式传递p值应该可以正常工作。 但是, sed命令不会更改文件。 如果您希望它在适当的位置更改文件,请使用-i选项,如下所示:

ssh.exec! "sed -i 's/1/#{p}/g' changed.txt"

或者,如果您想要在其他文件中进行更改,请使用:

ssh.exec! "sed 's/1/#{p}/g' changed.txt > newfile.txt"

另一种选择是:

ssh.exec! "sed -i 's/1/" + p + "/g' changed.txt"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM