Я не получаю результатов от grep, когда вызываю его с параметром, содержащим фигурные скобки, используя выражения Ruby `` или %x{}.
Скажем, у меня есть эти файлы в пустом каталоге:
$ echo '**hello**' > hello.md
$ echo 'hello' > hello.txt
Если мне нужны только результаты, соответствующие одному расширению, Ruby работает так, как ожидалось:
$ 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
Но если я запрошу результаты, соответствующие любому расширению, используя синтаксис фигурных скобок 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?
%x{echo a{b,c}d}
или что-то подобное, вы увидите ожидаемый результат? У меня также работает одиночный пробел, выходящий за скобки. - person numbers1311407   schedule 30.08.2011