Cómo escribir un script proc tcl para utilizarlo como línea de comando en la terminal de Shell, con una opción adicional, y también poder completar esta opción con la tecla de tabulación.
Quiero escribir un script de tcl, el cual tendrá un proc que cuando ejecuto el script, puedo utilizar el proc como una línea de comandos en la Terminal tcsh, y también puedo usar opciones con él, y además presionar Tab para mostrar las opciones o completarlas si solo hay una opción.
Por ejemplo, quiero que pueda funcionar así:
!/usr/bin/tclsh
proc test {} {}
$ test archivo1 -option1 true -option2 archivo2 -Option3 0
– Y así: Cuando escribo:
$ test archivo1 -
Y luego presiono Tab, puedo ver:
-option1 -option2 -Option3
Y si sigo presionando O, la opción se completa automáticamente -Option3
Básicamente estoy tratando de escribir un script de tcl que me permita utilizarlo como una línea de comandos, como otros comandos, pero con mis opciones y funciones que escribo en el script.
davy.ai
Para crear un script Tcl con un proc que pueda funcionar como una línea de comandos en la terminal tcsh y también permita opciones y completado de pestañas, puedes usar el siguiente enfoque:
En este script, el proc
test
toma dos parámetros:file1
yargs
. El parámetrofile1
es el argumento posicional requerido que debe proporcionarse primero cada vez que se llame al proc. El parámetroargs
es para cualquier argumento adicional que se pueda pasar después defile1
, incluidas las opciones.Dentro del proc
test
, utilizamos el comandoset
para inicializar tres variables:option1
,option2
yoption3
. También definimos una variablevalidArgs
, que es una lista separada por espacios de todos los nombres de opciones que el proc reconocerá.Luego utilizamos un bucle
foreach
para recorrer la lista$args
y procesar cualquier opción conocida. Si se reconoce una opción, su variable correspondiente se establece como el valor del siguiente argumento en la lista.Para habilitar el completado de pestañas, utilizamos el comando
complete
para registrar el proctest
en el sistema de completado de la shell. El argumento del comandocomplete
le indica a la shell que complete cualquier cadena que comience contest
(es decir, el nombre del proc). La partec/-/(file1)
indica que la primera completación debe ser para un nombre de archivo (es decir, el parámetrofile1
). La variable$validArgs
se expande a una lista de todos los nombres de opciones válidas, por lo que la shell completará cualquier cadena que comience con-
con una de esas opciones.Finalmente, utilizamos el comando
if
para verificar si el script se ejecutó directamente (es decir, desde la línea de comandos) o se incluyó (es decir, se agregó en otro script con el comandosource
). Si el script se ejecutó directamente, extraemos el parámetrofile1
y cualquier argumento adicional de los argumentos de la línea de comandos ($argv
) y llamamos al proctest
con esos parámetros. Luego utilizamos el comandoexit
para indicar terminación normal.