서버로 SSH를 호출하고 문자열을 에코하려고합니다. 문자열은 루비에 의해 정의되고 그것에 달러 기호가 있습니다.Ruby 시스템 콜을 통해 SSH를 통해 달러 기호를 보내십시오.
#!/usr/bin/env ruby
string = '$$%%$#@%$#@%325dg345345'
puts %x(ssh server "echo \'#{string}\'")
실행하면 반환되는 문자열은 문자열이 아닙니다. 원격 서버는 달러 기호를 변수로 해석합니다. 이것을 막기 위해 내가 할 수있는 영리한 도피의 형태가 있습니까? 문자는 무작위이므로 달러 기호를 이스케이프 처리하기위한 문자열 편집은 작동하지 않습니다.
escaped_string = string.gsub('$', '\$')
puts %x(ssh server "echo \'#{escaped_string}\'")
출력 :
쉘에 URL 인코딩과 같은 것이 있어야한다고 생각했지만 stdlib에있을 것으로 기대하지 않았습니다. +1 –
아주 좋습니다. 이것은 완벽하게 작동했습니다. 고맙다. – awojo