역따옴표를 사용하여 명령줄에 인수를 연결할 수 있습니까?
-
09-06-2019 - |
문제
Ruby 스크립트에서 OS 명령을 실행하고 싶지만 Ruby 변수에서 인수를 추가하고 싶습니다.
키워드를 사용하면 가능하다는 것을 알고 있습니다. 체계 그렇게 :
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
하지만 "역따옴표 또는 역따옴표 구문"을 사용하면 가능합니까?(내 말은 해당 구문을 사용한다는 뜻입니다. ls
)
해결책
아니요, 그러면 다음의 출력이 연결됩니다. ls
그리고 그 내용은 directory
.
하지만 다음과 같이 할 수 있습니다.
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
`ls #{directory}`
다른 팁
`ls #{directory}`
경로 이름에 공백이 있으면 문제가 발생하기 때문에 매우 안전하지 않습니다.
다음과 같이 하는 것이 더 안전합니다.
directory = '/home/paulgreg/'
args = []
args << "/bin/ls"
args << directory
system(*args)
Nick의 말이 맞습니다. 하지만 인수를 조각별로 조립할 필요는 없습니다.
directory = '/Volumes/Omg a space/'
system('/bin/ls', directory)
제휴하지 않습니다 StackOverflow