Запустите общий скрипт TCL в Windows и Linux

Я плохо знаком с TCL. Как я могу запустить общий tcl скрипт через Windows и Linux? Я хотел бы проверить тип платформы сначала и затем назвать соответствующий tcl proc.

5
задан serenesat 17 April 2015 в 12:27
поделиться

3 ответа

Вы можете начать с просмотра массива tcl_platform. На моей машине (windows) он сообщает следующее:

% parray tcl_platform
tcl_platform(byteOrder) = littleEndian
tcl_platform(machine)   = intel
tcl_platform(os)        = Windows NT
tcl_platform(osVersion) = 5.1
tcl_platform(platform)  = windows
tcl_platform(threaded)  = 1
tcl_platform(tip,268)   = 1
tcl_platform(tip,280)   = 1
tcl_platform(user)      = username
tcl_platform(wordSize)  = 4

На Unix-системе os и osVersion будут значениями, сообщаемыми uname -s и uname -r соответственно. Если вам нужно что-то более сложное, то пакет platform может оказаться подходящим вариантом!

7
ответ дан 18 December 2019 в 09:47
поделиться

Большинство вещей в Tcl работают одинаково в Windows и Unix; подавляющее большинство деталей, где скрыты различия. Чтобы обработать остальное:

  • Используйте соединение файла вместо конкатенации с / между ними.
  • Используйте собственное имя файла , чтобы имена файлов передавались подпроцессам.
  • Будьте осторожны с нагрузкой ; то, что он делает, совсем не переносимо.
  • У команды info есть некоторые полезные вещи, такие как имя интерпретатора Tcl ( info nameofexecutable ), поэтому вы можете легко и переносимо запускать интерпретаторы в подпроцессах.
  • Некоторые вещи просто не переносимы (например, доступ к реестру Windows).

Есть и некоторые тонкие различия, но вам нужно будет направлять нас в том, что вы делаете со своей программой, чтобы мы могли знать, какие биты имеют значение (например, Windows блокирует исполняемые файлы, когда они работают, а Unix - нет. t; иногда это меняет ситуацию).

3
ответ дан 18 December 2019 в 09:47
поделиться

Ага, это сработало, Джексон. По сути, я хотел знать, на какой ОС работает мой скрипт, например

set OS [lindex $tcl_platform(os) 0]
if { $OS == "Windows" } {
    perform this ...
} else {
    perform that ...
}
7
ответ дан 18 December 2019 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: