Utilización de scripts wsadmin con Jacl (en desuso)

Jacl es una implementación alternativa de TCL, escrita totalmente en código Java™.

Deprecated feature Deprecated feature: Jacl ha quedado en desuso y Jython es el lenguaje de scripts predeterminado. depfeat

La herramienta wsadmin utiliza Jacl V1.3.2.

Estabilización de la sintaxis de Jacl en la herramienta wsadmin

El lenguaje Jacl se ha estabilizado en la versión 7 del producto. Actualmente, IBM® no tiene previsto dejar en desuso ni eliminar esta capacidad en un próximo release del producto; no obstante, la inversión del futguro se centrará en el lenguaje Jython, que es la alternativa estratégica. No es necesario cambiar ninguna de las aplicaciones y de los scripts existentes que utilicen Jacl, pero debe considerar la utilización de la alternativa estratégica para aplicaciones nuevas.

La sintaxis Jython para la herramienta wsadmin constituye la dirección estratégica para la automatización administrativa de WebSphere Application Server. El programa continua proporcionando funciones y herramientas administrativas mejoradas que dan soporte a la automatización del producto y al uso de la sintaxis Jython. Las mejoras relacionadas con scripts Jython siguientes se proporcionan en el producto:
  • Asistencia de mandatos de la consola administrativa: una característica de la consola administrativa que muestra el mandato wsadmin que es equivalente a la acción realizada por el usuario que interactúa con la consola. La salida de la característica de asistencia de mandatos de la consola puede transferirse directamente a WebSphere Application Server Tool, que simplifica el desarrollo de los scripts Jython que se basan en las acciones de la consola de administración. También puede guardar la salida después de utilizar la característica de asistencia de mandatos de la consola en un archivo de texto plano para su uso posterior.
  • Programa de utilidad de conversión de Jacl a Jython: programa que convierte los scripts de wsadmin de sintaxis Jacl en scripts de wsadmin de sintaxis Jython. Docenas de nuevos mandatos de alto nivel de wsadmin que desasocian el script del modelo administrativo subyacente mediante el uso de parámetros sencillos y una lógica por omisión inteligente.

Sintaxis básica

La sintaxis básica de los mandatos Jacl es:

Mandato
arg1 arg2   arg3   ...

El mandato es el nombre de un mandato incorporado o un procedimiento Jacl. Por ejemplo:

puts stdout {¡Hola a todos!} 
=> ¡Hola a todos!

En este ejemplo, el mandato es puts, que necesita dos argumentos: un identificador de corriente de datos de E/S y una serie. El mandato puts escribe la serie en la corriente de datos de E/S junto con un carácter final de nueva línea. El mandato interpreta los argumentos. En el ejemplo, se utiliza stdout para identificar la corriente de datos de salida estándar. El uso de stdout como nombre es una convención utilizada por el mandato puts y los demás mandatos de E/S. stderr identifica la salida de error estándar y stdin identifica la entrada estándar.

Variables

El mandato set asigna valores a variables. Este mandato acepta dos argumentos: el nombre de la variable y el valor. Los nombres de variable pueden ser de cualquier longitud y son sensibles a las mayúsculas y minúsculas. No tiene que declarar variables de Jacl antes de utilizarlas. El intérprete creará la variable cuando se la asigne por primera vez un valor. Por ejemplo:

set a 5
=> 5
set b $a
=> 5

El segundo ejemplo asigna el valor de la variable a a la variable b. El uso del signo de dólar ($) indica las sustitución de la variable. Puede suprimir una variable con el mandato unset, por ejemplo:

unset nombreVar1 nombreVar2 ... 

Puede pasar cualquier número de variables al mandato unset. El mandato unset da un error si no se ha definido aún una variable. Puede suprimir toda la matriz o sólo un elemento de la matriz con el mandato unset. La utilización del mandato unset en una matriz es una forma fácil de borrar estructuras de datos de gran tamaño. La existencia de una variable se puede probar con el mandato info exists. Quizá tenga que probar la existencia de la variable porque el parámetro incr requiere que exista primero la variable, por ejemplo:

if ![info exists mi_info] {set mi_info 0} else {incr mi_info}

Sustitución de mandatos

La segunda forma de sustitución es la sustitución de mandatos. Los mandatos anidados se delimitan entre corchetes, [ ]. El intérprete de Jacl evalúa todo lo que está entre los corchetes y lo evalúa como un mandato. Por ejemplo:

set len [string length mi_serie]
=> 6

En este ejemplo, el mandato anidado es: string length mi_serie. El mandato string realiza varias operaciones sobre series. En este caso, el mandato solicita la longitud de la serie mi_serie. Si hay varios casos de sustitución de mandatos dentro de un solo mandato, el intérprete los procesa empezando por el corchete izquierdo hasta el corchete derecho. Por ejemplo:

set número "1 2 3 4" 
=> 1 2 3 4
set one [lindex $número 0]
=> 1
set end [lindex $número end]
=> 4 
set otro {123  456  789} 		
=> 123  456  789
set stringLen [string length [lindex  $otro  1]]
=> 3
set listLen [llength [lindex $otro 1]
=> 1

Expresiones matemáticas

El intérprete de Jacl no evalúa expresiones matemáticas. Utilice el mandato expr para evaluar expresiones matemáticas. La implementación del mandato expr acepta todos los argumentos, los concatena en una sola serie y analiza la serie como una expresión matemática. Una vez que el mandato expr calcula la respuesta, le da formato de serie y la devuelve. Por ejemplo:

expr 7,2 / 3
=> 2,4

Sustitución de la barra inclinada invertida

El tipo de sustitución final que realiza el intérprete de Jacl es la sustitución de la barra inclinada invertida. Utilice las barras inclinadas invertidas para añadir los caracteres de comillas que tienen un significado especial para el intérprete. Por ejemplo, puede especificar un signo de: dólar, paréntesis o corchete literal indicándolo con una barra inclinada invertida. Si utiliza muchas barras inclinadas invertidas, puede realizar agrupaciones entre llaves para desactivar toda la interpretación de los caracteres especiales. Hay dos casos en los que son necesarias las barras inclinadas invertidas. Por ejemplo:

set dólar "Esta es una serie que \$contiene el carácter de dólar"
=> Esta es una serie que $contiene el carácter de dólar

set x $dólar
=> Esta es una serie que $contiene el carácter de dólar 

set  group {$ {} [] { [ } ]}
=> $ {} [] { [ } ]

También puede utilizar barras inclinadas invertidas para continuar mandatos largos en varias líneas. Una línea nueva sin la barra inclinada invertida termina un mandato. Una barra inclinada invertida que es el último carácter de una línea se convierte en un espacio. Por ejemplo:

set  totalLength  [expr  [string  length  "primera serie"] + \
[string  length  "segunda serie"]]
=> 25

Agrupación con paréntesis y comillas dobles

Utilice las comillas dobles y los paréntesis para agrupar juntas las palabras. Las comillas permiten que se produzcan sustituciones en el grupo y los paréntesis impiden la sustitución. Esta norma se aplica a sustituciones de mandato, variable y barra inclinada invertida. Por ejemplo:

set s Hola
=> Hola

puts stdout "La longitud de $s es [string length $s]."
=> La longitud de Hola es 5.

puts  stdout  {La longitud de $s es [string  length  $s].}
=> La longitud de $s es [string length $s].

En el segundo ejemplo, el intérprete de Jacl realiza la sustitución de variable y mandato en el segundo argumento del mandato puts. En el tercer mandato, se impiden las sustituciones de modo que la serie se imprime tal cual está.

[AIX Solaris HP-UX Linux Windows] Debe tenerse especial cuidado con las descripciones de vía de acceso porque el lenguaje Jacl utiliza el carácter de barra inclinada invertida (\) como un carácter de escape. Para corregir esto, sustituya cada barra inclinada invertida por una barra inclinada hacia delante o utilice dobles barras inclinadas invertidas en sentencias de vía de acceso distribuida. Por ejemplo: C:/ o C:\\

Procedimientos y ámbito

Jacl utiliza el mandato proc para definir procedimientos. La sintaxis básica para definir un procedimiento es:

proc  nombre  listaarg  cuerpo

El primer argumento es el nombre del procedimiento que se define. El nombre es sensible a las mayúsculas y minúsculas y de hecho puede contener cualquier carácter. Los nombres de procedimiento y de variable no entran en conflicto entre sí. El segundo argumento es una lista de parámetros para los procedimientos. El tercer argumento es un mandato, o más usualmente, un grupo de mandatos que forman el cuerpo del procedimiento. Una vez definido un procedimiento Jython, se utiliza exactamente igual que cualquiera de los mandatos integrados. Por ejemplo:

proc divide {x y} {
set result [expr $x/$y]
puts $resultado
}

Dentro del script, así es como se llama al procedimiento divide:

divide 20 5

Y proporciona un resultado parecido al siguiente:

4

No es necesario utilizar la variable c en este ejemplo. El cuerpo del procedimiento también puede escribirse como:

return  [expr  sqrt($a  *  $a  +  $b  *  $b)]

El mandato return es opcional en este ejemplo porque el intérprete de Jacl devuelve el valor del último mandato del cuerpo como el valor del procedimiento. Por lo tanto, el cuerpo del procedimiento se puede reducir a:

expr  sqrt($a  *  $a  +  $b  *  $b)

El resultado del procedimiento es el resultado devuelto por el último mandato del cuerpo. El mandato return se puede utilizar para que el sistema devuelva un valor específico.

Hay un solo ámbito global para los nombres de procedimiento. Puede definir un procedimiento dentro de otro, pero está visible en todas partes. Hay un espacio de nombres distinto para variables y procedimientos, por lo tanto, podría tener un procedimiento y una variable con el mismo nombre sin entrar en conflicto. Todos los procedimientos tienen ámbitos locales para variables. Las variables introducidas en los procedimientos sólo existen para lo que dura la llamada al procedimiento. Después de que se realiza la devolución del procedimiento, estas variables son indefinidas. Si existe el mismo nombre de variable en un ámbito exterior, no se verá afectado el uso de ese nombre de variable dentro de un procedimiento. Las variables definidas fuera del procedimiento no son visibles al procedimiento, a no ser que se utilicen los mandatos de ámbito global.

El ámbito global es el ámbito de nivel superior. Este ámbito está fuera de cualquier procedimiento. Debe hacer que las variables definidas en el ámbito global sean accesibles a los mandatos dentro del procedimiento utilizando el mandato global. La sintaxis del mandato global es:

global  varName1  varName2 ...

Comentarios

Utilice el carácter de almohadilla (#) para crear comentarios.

Argumentos de la línea de mandatos

Los shell de Jacl pasan los argumentos de línea de mandatos al script como valor de la variable argv. El número de argumentos de la línea de mandatos lo proporciona la variable argc. El nombre del programa o el script, no es parte de argv ni lo computa argc. La variable argv es una lista. Utilice el mandato lindex para extraer elementos de la lista de argumentos, por ejemplo:

set  first  [lindex  $argv  0]
set  second  [lindex  $argv  1]

Series y coincidencia de patrones

Las series son los elementos de datos básicos del lenguaje Jacl. Hay varios mandatos que puede utilizar para manipular series. La sintaxis general del mandato string es:

string operación valorserie otrosargs

El argumento operación determina la acción de la serie. El segundo argumento es un valor de serie. Puede haber argumentos adicionales en función de la operación.

En la tabla siguiente se incluye un resumen del mandato string:

Tabla 1. Descripciones de la sintaxis del mandato string. Ejecute el mandato string con uno o varios argumentos.
Mandato Descripción
string compare serie1 serie2 Compara series de modo lexicográfico. Devuelve 0 si son iguales, -1 si serie1 se ordena delante de serie2, si no 1.
string first serie1 serie2 Devuelve el índice en serie2 de la primera aparición de serie1, o bien, -1 si no se encuentra serie1.
string index string1 index1 Devuelve el carácter en el índice especificado.
string last serie1 serie2 Devuelve el índice en serie2 de la última aparición de serie1, o bien, -1 si no se encuentra serie1.
string length serie Devuelve el número de caracteres de la serie.
string match patrón serie Devuelve 1 si serie coincide con el patrón, si no 0.
string range serie i j Devuelve el intervalo de caracteres de serie de i a j
string tolower serie Convierte la serie en minúsculas.
string toupper serie Convierte la serie en mayúsculas.
string trim serie ?caracts? Recorta los caracteres de caracts desde los dos extremos de serie. caracts toma por omisión un espacio en blanco.
string trimleft serie ?caracts? Recorta los caracteres de caracts desde el principio de serie. caracts toma por omisión un espacio en blanco.
string trimright serie ?caracts? Recorta los caracteres de caracts desde el final de serie. caracts toma por omisión un espacio en blanco.
string wordend serie ix Devuelve el índice de serie del carácter después de la palabra que contiene el carácter en el índice ix.
string wordstart serie ix Devuelve el índice de serie del primer carácter de la palabra que contiene el carácter en el índice ix.

El mandato append

El primer argumento del mandato append es un nombre de variable. Concatena los argumentos restantes en el valor actual de la variable con nombre. Por ejemplo:

set  mi_elemento  z
=> z
append  mi_elemento a b c
=> zabc

El mandato regexp

El mandato regexp proporciona acceso directo al evaluador de coincidencias de expresiones normales. La sintaxis es:

regexp  ?flags?  patrón serie ?match  sub1  sub2  ...?

El valor que devuelve es 1 si alguna parte de la serie coincide con el patrón. De lo contrario, el valor de retorno es 0. El patrón no tiene que coincidir con la serie completa. Si necesita más control que este, puede anclar el patrón al principio de la serie comenzando el patrón con ^, o al final de la serie finalizando el patrón con el signo de dólar $. Puede forzar que el patrón coincida con la serie completa utilizando los dos caracteres. Por ejemplo:

set  texto1  "Esta es la primera serie"
=> Esta es la primera serie

regexp  "primera serie" $texto1
=> 1

regexp "segunda serie"  $texto1
=> 0

Estructuras de datos de Jacl

La estructura básica de datos del lenguaje Jacl es una serie. Hay dos estructuras de datos de nivel superior: listas y matrices. Las listas se implementan como series y la estructura se define mediante la sintaxis de la serie. Las normas de sintaxis son las mismas que para los mandatos. Los mandatos son instancias de listas en particular. Las matrices son variables que tienen un índice. El índice es un valor de serie, por lo tanto puede pensar en matrices como correlaciones de una serie (el índice) con otra serie (el valor del elemento de matriz).

Listas de Jacl

Las listas del lenguaje Jacl son series con una interpretación especial. En el lenguaje Jacl, una lista tiene la misma estructura que un mandato. Las listas son series con elementos de lista separados por espacios en blanco. Puede utilizar paréntesis o comillas para agrupar las palabras con espacio en blanco en un solo elemento de lista.

La tabla siguiente incluye mandatos que están relacionados con listas:

Tabla 2. Descripciones de la sintaxis del mandato list. Ejecute el mandato list con uno o varios argumentos.
Mandato Descripción
list arg1 arg2 Crea una lista de todos sus argumentos.
lindex lista i Devuelve el elemento iésimo de lista.
llength lista Devuelve el número de elementos de lista.
lrange lista i j Devuelve los elementos iésimo y jésimo de lista.
lappend varLista arg arg ... Anexa elementos al valor de varLista
linsert lista índice arg arg ... Inserta elementos en lista delante del elemento en la posición de índice. Devuelve una lista nueva.
lreplace lista i j arg arg ... Sustituye los elementos i a j de lista por los argumentos. Devuelve una lista nueva.
lsearch modalidad lista valor Devuelve el índice del elemento de lista que coincide con el valor de acuerdo a la modalidad, que es -exact, -glob o -regexp, -glob es el valor predeterminado. Devuelve -1 si no se encuentra.
lsort conmutadores lista Ordena elementos de la lista de acuerdo a los conmutadores: mandato -ascii, -integer, -real, -increasing, -decreasing, -command. Devuelve una lista nueva.
concat arg arg arg ... Une varias listas juntas en una lista.
join lista serieUnión Fusiona los elementos de una lista juntos separándolos por serieUnión.
split serie caractDivisión Divide una serie en elementos de lista, utilizando los caracteres de carctDivisión como límites entre elementos de lista.

Matrices

Son la otra estructura de datos principal del lenguaje Jacl. Una matriz es una variable con un índice con valores de serie, de modo que puede pensar en una matriz como en una correlación de series con series. Internamente, una matriz se implementa con una tabla de totales de control. El coste de acceder a cada elemento suele ser el mismo. El índice de una matriz se delimita por paréntesis. El índice puede tener cualquier valor de serie y puede ser el resultado de una sustitución de variable o de mandato. Los elementos de la matriz se definen con el mandato set, por ejemplo:
set arr(index) value

Sustituya el signo de dólar ($) para obtener el valor de un elemento de matriz, por ejemplo:

set mi_elemento $arr(index)

Por ejemplo:

set fruta(mejor) kiwi
=> kiwi

set fruta(peor) melocotón
=> melocotón

set fruta(buena) plátano
=> plátano

array get fruta
=> buena plátano peor melocotón mejor kiwi

array exists fruta
=> 1

La tabla siguiente incluye mandatos de matriz:

Tabla 3. Descripciones de la sintaxis del mandato array. Ejecute el mandato array con un argumento.
Mandato Descripción
array exists arr Devuelve 1 si arr es una variable de tipo matriz.
array get arr Devuelve una lista que alterna entre un índice y el valor correspondiente de la matriz.
array names arr ?patrón? Devuelve la lista de todos los índices definidos para arr o los que coinciden con el patrón de coincidencia de serie.
array set arr lista Inicializa la matriz arr a partir de lista, que necesita la misma forma que la lista devuelta por get.
array size arr Devuelve el número de índices definidos para arr.
array startsearch arr Devuelve un símbolo de búsqueda para una búsqueda a través de arr.
array nextelement arr id Devuelve el valor del siguiente elemento de la matriz de la búsqueda identificada por el id de símbolo. Devuelve una serie vacía si no queda ningún elemento más de la búsqueda.
array anymore arr id Devuelve 1 si quedan más elementos de la búsqueda.
array donesearch arr id Finaliza la búsqueda identificada por id.

Mandatos de flujo de control

Existen los siguientes mandatos de bucle:

  • while
  • foreach
  • for

Los mandatos siguientes son condicionales:

  • if
  • switch

El mandato siguiente es de manejo de errores:

  • catch

Los mandatos siguientes ajustan el flujo de control:

  • break
  • continue
  • return
  • error

if then else

El mandato if es el mandato condicional básico. Indica que si una expresión es verdadera, ejecuta la segunda línea de código; de lo contrario, ejecuta otra línea de código. El segundo cuerpo de mandato (la cláusula else) es opcional. La sintaxis del mandato es:

if  boolean  then  cuerpo1  else  cuerpo2

Las palabras clave then y else son opcionales. Por ejemplo:

if {$x == 0} {
 puts stderr "¡División por cero!"
} else {
 set slope [expr $y/$x]
}

switch

Utilice el mandato switch para bifurcarse a uno de los muchos mandatos en función del valor de una expresión. Puede elegir basándose en una coincidencia de patrón así como en comparaciones simples. Se puede especificar cualquier número de pares de patrón-cuerpo. Si coinciden varios patrones, sólo se evalúa el cuerpo de código del primer patrón de coincidencia. La forma general del mandato es:

switch  distintivos  valor  pat1  cuerpo1  pat2  cuerpo2  ...

También puede agrupar todas los pares de patrón-cuerpo en un solo argumento:

switch  distintivos  valor  {pat1  cuerpo1   pat2   cuerpo2  ...}

Hay cuatro distintivos posibles que determinan cómo se realiza la comparación con el valor.

  • -exact : realiza una comparación del valor exacta con uno de los patrones.
  • -glob: utiliza la comparación con el patrón glob-estilo.
  • -regexp: utiliza la comparación con el patrón de expresión regular.
  • --: sin distintivo (o el final de los distintivos). Resulta de utilidad cuando el valor puede comenzar por un guión (-).

Por ejemplo:

switch  -exact  --  $valor  {
 foo  {doFoo;  incr  count(foo)}
 bar	{doBar;  return  $count(foo)}
 default   {incr  count(otro)}
}

Si el patrón que está asociado al último cuerpo es default, entonces se iniciará el cuerpo del mandato si no coincide con ningún otro patrón. La palabra clave default funciona solamente en el último par de patrón-cuerpo. Si utiliza el patrón predeterminado en un cuerpo anterior, se trata como un patrón para comparar con el valor predeterminado de serie literal.

foreach

El mandato foreach repite en bucle un cuerpo de mandatos y asigna una variable de bucle a cada uno de los valores de la lista. La sintaxis es:

foreach varBucle listaValores cuerpoMandato

El primer argumento es el nombre de la variable. El cuerpo del mandato se ejecuta una vez por cada elemento del bucle con la variable de bucle que tiene valores sucesivos de la lista. Por ejemplo:

set números {1 3 5 7 11 13}
foreach num $números {
puts $num
}

El resultado del ejemplo anterior es la salida siguiente, suponiendo que sólo existe un servidor en el entorno. Si hay más de un servidor, se devuelve la información de todos los servidores:

1
3
5
7
11
13

while

El mandato while acepta dos argumentos: una prueba y un cuerpo de mandato, por ejemplo:

while  booleanExpr  body

El mandato while prueba repetidamente la expresión booleana y ejecuta el cuerpo si la expresión es verdadera (no cero). Por ejemplo:

set i 0
while {$i < 5} {
puts "i es $i"
incr i} 

El resultado del ejemplo anterior se parece a la salida siguiente, suponiendo que sólo haya un servidor. Si hay más de un servidor, se imprimen todos los servidores:

i is 0
i es 1
i es 2
i es 3
i es 4

for

El mandato for es similar al lenguaje C para la sentencia. Acepta cuatro argumentos, por ejemplo:

for inicial prueba final cuerpo

El primer argumento es un mandato para inicializar el bucle. El segundo argumento es una expresión booleana que determina si se ejecuta el cuerpo del bucle. El tercer argumento es un mandato que se ejecuta después del cuerpo del bucle, por ejemplo:

set números {1 3 5 7 11 13}
for {set i 0} {$i < [llength $números]} {incr i 1} {
puts "i es $i"
} 

El resultado del ejemplo anterior es parecido a la salida siguiente, suponiendo que sólo haya un servidor en el entorno. Si hay más de un servidor, se imprimen todos los nombres de servidores:

i es 1
i es 3
i es 5
i es 7
i es 11
i es 13

break and continue

Puede controlar la ejecución del bucle con los mandatos break y continue. El mandato break produce la salida inmediata de un bucle. El mandato continue produce que el bucle continúe con la siguiente repetición.

catch

Se produce un error si llama a un mandato con un número incorrecto de argumentos o si el mandato detecta alguna condición de error particular a su implementación. Un error sin capturar impide que se ejecute un script. Utilice el mandato catch para atrapar tales errores. El mandato catch acepta dos argumentos, por ejemplo:

catch mandato ?varResultado? 

El primer argumento es el cuerpo del mandato. El segundo argumento es el nombre de una variable que contiene el resultado del mandato o un mensaje de error si el mandato da lugar a un error. El mandato catch devuelve un valor de cero si no se ha capturado ningún error o un valor de uno si el mandato captura un error. Por ejemplo:

catch {expr 20 / 5} resultado
==> 0
puts $resultado
==> 4
catch {expr text / 5} resultado
==> 1
puts $resultado
==> error de sintaxis en la expresión "text / 5"

return

Utilice el mandato return para devolver un valor antes del final del cuerpo del procedimiento o si se debe devolver un valor de contraste.

Espacios de nombres

Jacl realiza seguimientos de las entidades con nombre como, por ejemplo, variables, en espacios de nombres. La herramienta wsadmin también añade entradas al espacio de nombres global para los objetos de scripts, como el objeto AdminApp

Cuando se ejecuta un mandato proc, se crea un espacio de nombres local y se inicializa con los nombres y los valores de los parámetros del mandato proc. Las variables se retienen en el espacio de nombres local cuando se ejecuta el mandato proc. Cuando se detiene el mandato proc, se borra el espacio de nombres local. El espacio de nombres local del mandato proc implementa la semántica de las variables automáticas en lenguajes como C y Java.

Mientras que las variables del espacio de nombres global son visibles para el código de nivel superior, no lo son de forma predeterminada desde un mandato proc. Para hacerlas visibles, declare las variables globalmente utilizando el mandato global. Para los nombres de variable que proporciona, el mandato global crea entradas en el espacio de nombres local que señalan a las entradas del espacio de nombres global que realmente define las variables.

Si utiliza un objeto de script proporcionado por la herramienta wsadmin en un proc, debe declararlo globalmente antes de utilizarlo, por ejemplo:

proc { ... } {
		global AdminConfig
		... [$AdminConfig ...]
}

Invocación de scripts utilizando otro script

Utilice el mandato source para llamar a un script Jacl desde otro script Jacl. Por ejemplo:

Cree un script llamado test1.jacl.

[AIX Solaris HP-UX Linux Windows]
source c:/temp/script/testProcedure.jacl
printName Cathy Smith
[z/OS]
source /temp/script/testProcedure.jacl
printName Cathy Smith

Cree un script llamado testProcedure.jacl.

proc printName {first last} {
		puts "My name is $first $last"
}

Pase la siguiente vía de acceso como argumento de script.

[AIX Solaris HP-UX Linux Windows]
wsadmin -lang jacl -f c:/temp/script/test1.jacl
[z/OS]
wsadmin -lang jacl -f '/temp/script/test1.jacl'

Debe utilizar barras inclinadas (/) como separador de la vía de acceso. Las barras inclinadas invertidas (\) no funcionarán.

Redirección mediante el mandato exec

El siguiente mandato exec de Jacl para la redirección no funciona en plataformas Linux:

eval exec ls -l > /tmp/out

El mandato exec del lenguaje de scripts Jacl no soporta completamente la redirección, por lo tanto, puede ocasionar problemas en algunas plataformas.

No utilice la redirección cuando utiliza el mandato exec para el lenguaje Jacl. En su lugar, puede guardar el mandato exec para su redirecció en una variable y escribirlo en un archivo, por ejemplo:

open /tmp/out w puts $fileId $result close $fileId

En algunos casos, también puede realizar una redirección utilizando shell y una redirección de mandatos .sh y no una redirección emitida por Tcl.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cxml_jacl
File name: cxml_jacl.html