The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Matrices en awk degeno Programación de scripts de shell y 5 07-28-2008 01:51 AM
¿Necesita Ayuda con awk y matrices fusionX Programación de scripts de shell y 7 02-11-2008 06:41 PM
awk matrices imonthejazz Programación de scripts de shell y 1 09-21-2007 09:29 AM
matrices en awk? craigsky Programación de scripts de shell y 3 08-27-2007 09:13 PM
KSH y matrices whited05 Programación de scripts de shell y 1 06-24-2005 12:07 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 10-06-2008
ricardo.ludwig ricardo.ludwig is offline
Usuario Registrado
  
 

Fecha: marzo 2008
Puestos: 10
Las matrices de exportación en ksh

Hola a todos!

¿Por qué me puede exportar matrices en ksh?
Yo trie esto por exemplo:

En el guión de los padres

array [0] \u003d a
array [1] \u003d b
array [2] \u003d c

matriz de exportación

Cuando veo la variable de matriz en la escritura del niño sólo hay primer índice.

Por exemplo, en niño script

+ (echo $ array [*])
un

Pero quiero que todos los índices.
¿Alguna idea?
  #2 (Enlace permanente)  
Old 10-06-2008
Bakunin bakunin is offline Forum Staff  
Bughunter Extraordinaire
  
 

Fecha: mayo de 2005
Ubicación: En el extremo izquierdo de bytes de / dev / kmem
Mensajes: 1.628
Las matrices no pueden ser exportados de la misma manera las variables pueden ser. Este es un limitiation conocido en Korn Shell. Usted puede exportar todos y cada uno elemento de la matriz (utilizando el nombre de la matriz este es el primer elemento por defecto, como ya han experimentado), pero no la matriz misma.

O bien hacer algo como:

Código:
(( iCnt = 0 ))
while [ $iCnt -lt ${array[*]} ] ; do
     export array[$iCnt]
     (( iCnt += 1 ))
done
o hacer un pequeño truco: se puede pasar el nombre de las matrices como un parámetro a una subrutina, ¿sí? A continuación, utilice eval para copiar la matriz en una matriz local. Aquí está un ejemplo:

Código:
function pShowArray
{
typeset    chArrayName="$1"
typeset -i iCnt=0

(( iCnt = 0 ))                  # copy array into local (to the function) array
while [ $iCnt -le $(eval print \${#$1[*]}) ] ; do
     typeset aLocalArray[$iCnt]=$(eval print - \${$1[$iCnt]})
     (( iCnt += 1 ))
done

print - "The passed array is named: $chArrayname"
print - "It has ${#aLocalArray[@]} elements, which are:"

(( iCnt = 0 ))
while [ $iCnt -le ${#aLocalArray[@]} ] ; do
     print - "Element #${iCnt} is \"${aLocalArray[$iCnt]}\""
     (( iCnt += 1 ))
done

return 0
}

# ---- function main

typeset aArrOne[0]="foo"
typeset aArrOne[1]="bar"
typeset aArrOne[2]="wee"
typeset aArrOne[3]="duh"

typeset aArrTwo[0]="1"
typeset aArrTwo[1]="2"
typeset aArrTwo[2]="3"

pShowArray aArrayOne

pShowArray aArrayTwo

exit 0
Espero que esto ayude. Es algo así como pasar los parámetros a través de un puntero en vez de pasar directamente, ¿no?

Bakunin
  #3 (Enlace permanente)  
Old 10-06-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programador, autor
  
 

Fecha: marzo 2007
Ubicación: Toronto, Canadá
Puestos: 2.361

No se puede exportar matrices.

La manera más fácil pasar una matriz es la de convertir a una variable escalar, con los elementos separados por un carácter no utilizado en cualquiera de los elementos. Por ejemplo, este usa una nueva línea:

Código:
array_separator='
' ## adjust as needed
array=( a b c )
array_contents=$( printf "%s$array_separator" "${array[@]}" )
export array_separator array_contents
Para convertir de nuevo a una matriz:

Código:
oIFS=$IFS
IFS=$array_separator
array=( $array_contents )
IFS=$oIFS
  #4 (Enlace permanente)  
Old 10-06-2008
ricardo.ludwig ricardo.ludwig is offline
Usuario Registrado
  
 

Fecha: marzo 2008
Puestos: 10
Problema resuelto

Bakunin y cfajohnson muchas gracias por tu ayuda.
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 01:40 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0