В качестве альтернативы вы можете использовать что-то вроде пакета cmdline из tcllib. Это позволяет вам устанавливать значения по умолчанию для двоичных флагов и аргументов имя / значение, а также давать им описания, чтобы можно было отображать отформатированное справочное сообщение. Например, если у вас есть программа, для которой требуется имя входного файла и, необязательно, имя выходного файла и двоичная опция для сжатия вывода, вы можете использовать что-то вроде:
package require cmdline
set sUsage "Here you put a description of what your program does"
set sOptions {
{inputfile.arg "" "Input file name - this is required"}
{outputfile.arg "out.txt" "Output file name, if not given, out.txt will be used"}
{compressoutput "0" "Binary flag to indicate whether the output file will be compressed"}
}
array set options [::cmdline::getoptions argv $sOptions $sUsage]
if {$options(inputfile) == ""} {puts "[::cmdline::usage $sOptions $sUsage]";exit}
Суффикс .arg указывает, что это аргумент пары имя / значение, если его нет в списке, он будет предполагать, что это двоичный флаг.