Есть ли способ передать каждый файл (с расширением .tcl) выбранного каталога один за другим в определенную переменную в tcl?
Передача каждого файла выбранного каталога
- Что вы имеете в виду под "один за другим"? Ты про список или что-то другое? 27.07.2016
Ответы:
Один из способов сделать то, что я думаю, вы хотите сделать, это
foreach file [glob -directory $dir *.tcl] {
# do something with the filename $file
}
Команда glob
возвращает список имен файлов, соответствующих шаблону в последнем аргументе (в данном случае *.tcl
, что означает «любое имя, оканчивающееся на .tcl»). Параметр -directory
указывает, в каком каталоге искать файлы.
Команда вызовет ошибку, если нет файлов, соответствующих шаблону. Чтобы этого избежать и просто получить пустой список, используйте опцию -nocomplain
.
Команда foreach
принимает спецификацию переменной, список (в данном случае список имен файлов) и сценарий. Сценарий оценивается один раз для каждого элемента (или пакета элементов в некоторых случаях) с переменной, установленной для элемента.
Документация: foreach, glob, Соглашения об именах файлов, поддерживаемые командами Tcl< /а>
Синтаксис сопоставления строк Tcl:
*
соответствует последовательности из нуля или более символов?
соответствует одному символу[chars]
соответствует одному символу в наборе, заданном chars (^ не не инвертирует; диапазон может быть задан как a-z)\x
соответствует символу x, даже если этот символ специальный (один из*?[]\
)