문제

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top