Передача переменных в команду grep в Tcl Script - PullRequest
0 голосов
/ 11 февраля 2019

Я столкнулся с проблемой при попытке передать значение переменной в команду grep.

По сути, я хочу grep из строк, которые соответствуют моему шаблону, и шаблон сохраняется в переменной.Я беру входные данные от пользователя и анализирую myfile и проверяю, существует ли шаблон (здесь нет проблем).

Если он существует, я хочу отобразить строки, имеющие шаблон i.e grep it out.

Мой код:

if {$a==1} {
      puts "serial number exists"
      exec grep $sn myfile } else {
      puts "serial number does not exist"}

Мой ввод: SN02

Мой результат при запуске grep в терминале Shell (grep "SN02" myfile):

serial number exists
SN02 xyz rtw 345
SN02 gfs rew 786

Мой результат при попытке выполнить grep in Tcl script:

serial number exists

Строки, соответствующие шаблону, не являютсяотображается.

1 Ответ

0 голосов
/ 11 февраля 2019

Ваш (ужасный ИМО) отступ не является на самом деле проблемой.Проблема в том, что exec не печатает автоматически вывод команды exec'ed *.

Требуется puts [exec grep $sn myfile]

Это потому, что команда exec предназначена для разрешения выводадля захвата в переменную (например, set output [exec some command])

* в интерактивном сеансе tclsh, для удобства выводится результат команд.В неинтерактивном сценарии это не так.

Чтобы проконтролировать «ужасный» комментарий, ваш исходный код не имеет визуальных подсказок о том, где заканчивается блок «true» и где начинается блок «else».Благодаря словесно-ориентированному характеру Tcl, он вполне соответствует мандату one true brace стиль отступа.

...