Vectores en Korn Shell (Unix).-

Aquellos que utilizan Unix o Linux diariamente, programan muchos scripts para diversas tareas. Es que uno de sus kernels ksh es de los más cómodos para trabajar. Pero pocos dan utilidad a los vectores (arrays).

Su utilización es sencilla, simplemente se asigna a una variable con subíndice un valor y listo. Los subíndices pueden no ser consecutivos, lo que muchas veces puede complicar las cosas a la hora de querer iterarlos, no por el vector, sino por las tareas que hagas con los contenidos de los elementos vacios. Tal vez convenga utilizar una variable para ir llevando el contador de elementos.

Pero ¿cómo los recorremos? Uno de los datos principales que necesitamos para recorrerlos es el subíndice máximo del vector, y algo que pocos conoces es la sentencia para obtener ese valor: ${#myVar[@]}, que devuelve el subíndice máximo que se utilizó para asignar un elemento al vector, no la cantidad de elementos que componen el mismo. En el ejemplo anterior, la sentencia retornará 3 para la primera parte del ejemplo y 2 para la segunda parte (set -A…) ya que los subíndices comienzan por cero.

Así, la forma de recorrer el vector sería:

Nótese en el ejemplo que las llaves ({}) rodean al elemento solicitado. Esta es la forma de acceder a un dato guardado en un elemento requerido del vector.

De esta forma nos aseguramos de recorrer el vector hasta su último elemento aunque alguno de sus subíndice no haya sido asignado. Pero ¿cómo sabemos cuantos elementos fueron asignados?. La respuesta está en esta simple instrucción:

Por otra parte, si quisieramos ver todos los elementos del vector en una lista vastará con:

lo que no es muy útil si tenemos en cuenta que el separador de campos por omisión que utiliza Unix es el espacio en blanco, con lo cual perderíamos la capacidad de saber donde comienza y donde termina cada elemento. Esto tiene una fácil solución cambiando el valor del separador de campo que se encuentra en la variable de entorno FS.

Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.