nixp.ru v3.0

27 мая 2017,
суббота,
20:34:14 MSK

DevOps с компанией «Флант»
olsmir написал 5 июня 2009 года в 17:24 (692 просмотра) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 2 комментария на сайте.

При написании скрипта TCL никак не могу найти способ, как мне получить путь к самому этому файлу TCL. Например, я написал скрипт test.tcl, поместил его на C:\AAA\BBB\test.tcl. Как мне в этом же скрипте извлечь путь C:\AAA\BBB ?

lexx

regsub -all {\[^\]+$} «C:\\AAA\\BBB\\test.tcl» «» out

puts $out

olsmir

Всё это хорошо (а фразу «\test.tcl», которая также возвращается в переменную $out, я бы естественно отсёк), но в этом примере В ЯВНОМ ВИДЕ указывается этот путь. А я его как бы заранее-то не знаю и хочу получить. Т.е. я поместил скрипт test.tcl в некое место и в процеесе его выполнения хочу получить это место.

lexx

Даааа чета я стпуил по твоему вопросу, тада просто в тело скрипта помести:

regsub {[^\\]+$} $argv0 "" path
cd $path
puts [pwd]
olsmir

Увы. $argc и $argv<число> (конечно $argv0) — это первое, что пришло мне на ум, по аналогии с другими языками командной строки. Написал простейшую команду puts «path = $argv0», и получил отлуп:

# can’t read «argv0»: no such variable

Это я получил внутри того приложения, которое умеет работать со скриптами TCL (для чего мне собственно всё и надо).

Если же выполнить из-под обычного интерпретатора TCL (запускаешь экзешник tclsh, открывается чёрное окно с приглашением в виде %, и там вводишь source test.tcl), то выдаётся пустышка:

path =