Как написать указанные аргументы в tcl, например -h [duplicate]

Также взгляните на ...

compile

Зависимости Maven . Это значение по умолчанию, но я обнаружил, что в некоторых случаях явным образом устанавливаю эту область также Maven для поиска локальных библиотек в локальном репозитории.

2
задан Foad Rezek 21 June 2014 в 12:30
поделиться

2 ответа

В документации приведен пример. Вот простой пример:

package require cmdline

set parameters {
    {server.arg ""   "Which server to search"}
    {debug           "Turn on debugging, default=off"}
}

set usage "- A simple script to demo cmdline parsing"
array set options [cmdline::getoptions ::argv $parameters $usage]
parray options

Примеры прогонов:

$ tclsh simple.tcl 
options(debug)  = 0
options(server) = 

$ tclsh simple.tcl -server google.com
options(debug)  = 0
options(server) = google.com

$ tclsh simple.tcl -server google.com -debug
options(debug)  = 1
options(server) = google.com

$ tclsh simple.tcl -help
simple - A simple script to demo cmdline parsing
 -server value        Which server to search <>
 -debug               Turn on debugging, default=off
 -help                Print this message
 -?                   Print this message

    while executing
"error [usage $optlist $usage]"
    (procedure "cmdline::getoptions" line 15)
    invoked from within
"cmdline::getoptions ::argv $parameters $usage"
    invoked from within
"array set options [cmdline::getoptions ::argv $parameters $usage]"
    (file "simple.tcl" line 11)

Обсуждение

  • В отличие от большинства утилит Linux, TCL использует одиночную тире вместо двойных тире для параметров командной строки
  • Когда флаги заканчиваются на .arg, тогда этот флаг ожидает аргумент, например, в случае server.arg
  • Отладка флаг не заканчивается на .arg, поэтому он не ожидает никакого аргумента
  • Пользователь определяет параметры командной строки списком списков. Каждый суб-список содержит 2 или 3 части: флаг (например, debug) Значение по умолчанию (например, 0), только если параметр принимает аргумент (флаг заканчивается на .arg). И справочное сообщение
  • Вызовите использование / помощь с -help или -?, однако вывод не очень хорош, см. Последний прогон образца.

Обновить : Help / Usage

Я думал о выходе сообщения, когда пользователь вызывается справкой (см. Последний пример выше). Чтобы обойти это, вам нужно заманить ошибку самостоятельно:

set usage "- A simple script to demo cmdline parsing"
if {[catch {array set options [cmdline::getoptions ::argv $parameters $usage]}]} {
    puts [cmdline::usage $parameters $usage]
} else {
    parray options
}

Пример прогона 2:

$ tclsh simple.tcl -?
simple - A simple script to demo cmdline parsing
 -server value        Which server to search <>
 -debug               Turn on debugging, default=off
 -help                Print this message
 -?                   Print this message
7
ответ дан JoL 24 August 2018 в 07:13
поделиться

Tcllib имеет такой пакет, cmdline . Это немного недооценено, но оно работает.

2
ответ дан Peter Lewerin 24 August 2018 в 07:13
поделиться
Другие вопросы по тегам:

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