Ruby의``또는 % x {} 표현식을 사용하여 중괄호를 포함하는 param을 호출하면 grep에서 결과를 얻지 못합니다.Ruby에서 실행 된 params에 중괄호를 사용하여 grep 호출 결과가 누락되었습니다.
$ grep -rn hello . --include=*.txt
./hello.txt:1:hello
$ grep -rn hello . --include=*.md
./hello.md:1:**hello**
$ irb
ree-1.8.7-2011.03 :001 > `grep -rn hello . --include=*.txt`
=> "./hello.txt:1:hello\n"
ree-1.8.7-2011.03 :002 > %x{grep -rn hello . --include=*.md}
=> "./hello.md:1:**hello**\n"
ree-1.8.7-2011.03 :003 > exit
하지만 결과 일치에 요구하는 경우 :
$ echo '**hello**' > hello.md
$ echo 'hello' > hello.txt
나는 단지 하나의 확장자와 일치하는 결과를 원하는 경우, 루비가 예상대로 작동합니다
내가 빈 디렉토리에이 파일을 말해봐 grep의 중괄호 구문을 사용하여 확장하거나 Ruby와 함께 결과가 나오지 않음 :$ grep -rn hello . --include=*.{txt,md}
./hello.txt:1:hello
./hello.md:1:**hello**
$ irb
ree-1.8.7-2011.03 :001 > `grep -rn hello . --include=*.{txt,md}`
=> ""
ree-1.8.7-2011.03 :002 > %x{grep -rn hello . --include=*.{txt,md}}
=> ""
편집 : 에코가 작동하지만 명령 결과가 여전히 비어 있습니다.
ruby-1.9.2-p180 :004 > `echo grep -rn hello . --include=*.{txt,md}`
=> "grep -rn hello . --include=*.{txt,md}\n"
ruby-1.9.2-p180 :005 > `grep -rn hello . --include=*.{txt,md}`
=> ""
어떻게 디버깅하여 실제 명령이 실행되고 있는지 확인하십시오. 그리고 Ruby의 매개 변수에서 중괄호를 사용하여 시스템 명령을 실행하는 올바른 방법은 무엇입니까?
내가 MRI 1.9.2에 그리고 난이 문제가없는 것을 확인할 수 있습니다. 간단히'% x {echo a {b, c} d}'또는 비슷한 것을 실행하면 예상 결과를 볼 수 있습니까? 대괄호를 이스케이프하는 단일 백 스페이스는 나를 위해 작동합니다. – numbers1311407
나는 원래 1.9.2에서이 이상 함을 발견했다; 그 결과로 편집 된 질문. –