Проблема в том, что одинарные кавычки не являются особыми для tcl
, поэтому вы на самом деле запускаете команду grep
с аргументом '\.foo'
, включая кавычки, которые обычно должны быть удалены оболочкой.
Это приводит к тому, что grep
не соответствует, поэтому он завершается с кодом ошибки, отличным от -нулевым, и поэтому команда exec
передает ошибку.
Немедленный ответ — использовать tcl
двойные -кавычки(grep -E "\\.foo"
)или без кавычек(grep -E \\.foo
)или фигурные -кавычки(grep -E {\.foo}
). Но альтернатива — не прибегать к командам оболочки. Эквивалентом в tcl
может быть:
set fullfiles [glob *.foo]
foreach f $fullfiles { lappend files [string trimright $f.foo] }
Я не понимаю, почему, но редактирование файла непосредственно в ViM обрабатывало его как файл Unix, но редактирование через -документ рассматривало его как файл DOS. Однако я нашел очень удобный инструмент, который решил проблему
.`yum install dos2unix`
dos2unix./filename.txt
Похоже, это делает файл совместимым со стандартами файлов Unix