elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Una mano con bash
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Una mano con bash  (Leído 2,136 veces)
santiago.lz

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Una mano con bash
« en: 7 Julio 2010, 19:06 pm »

Buenas gente, soy nuevo en el foro.

Estoy haciendo unos trabajos en bash pero me tranque. El problema es que tengo una lista de parámetros y la tengo que mostrar invertida. Se que esta el comando "tac" que sirve para mostrar un archivo invertido, pero no se si sirve para mostrar un vector. Bueno, otro gran problema que tengo es que no tengo donde probar los scripts :-\

No se si se entendió el problema, acá lo dejo mas claro.

Yo tengo esto (que dicho sea de paso no se si funciona):
Código:
	for i in $*; do
parametros [cont] = $i
cont = $(($cont + 1))
done

lo que quiero hacer es tener esos mismo datos invertidos en otro vector, me explico?

bueno, saludos y muchas gracias


En línea

Ni patria, ni dios, NACIONAL NACIONAL NACIONAL!!!
santiago.lz

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Una mano con bash
« Respuesta #1 en: 7 Julio 2010, 20:04 pm »

Bueno, esta es una idea que tenia, pero no se como codificarlo.
La idea es hacer un for desde $cont hasta 0 restandole 1 cada vez que vuelve al principio, adentro del for le diria que al item [$cont] del vector parametros lo copie al nuevo vector llamado parametrosinvertidos pero con indice $cont2, despues de esto le sumo 1 a $cont2

Seria mas o menos asi:

Código:
for [ i -eq $cont; i -gt 0 ; i-- ]
parametrosinv [cont2] = parametros [i]
cont2 = $(($cont2 + 1))
done

A ver si a alguien se le ocurre como hacer eso en bash, porque la estructura del for es "for item in lista" eso que puse ahi creo que se puede hacer en awk pero no estoy seguro como.

Saludos y gracias de nuevo.


En línea

Ni patria, ni dios, NACIONAL NACIONAL NACIONAL!!!
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Una mano con bash
« Respuesta #2 en: 7 Julio 2010, 20:10 pm »

Código
  1. #!/usr/bin/bash
  2. normal=(1 2 3 4 5 6 7 8 9)
  3. echo "Normal : ${normal[@]}"
  4. invertido=($(echo "${normal[@]}" | awk '{for (i = NF; i>=1; i--) printf $i " "} END{print ""}'))
  5. echo "Invertido : ${invertido[@]}"

Código:
leo@lein:~/Escritorio$ bash shit.sh
Normal : 1 2 3 4 5 6 7 8 9
Invertido : 9 8 7 6 5 4 3 2 1
leo@lein:~/Escritorio$

Código
  1. #!/usr/bin/bash
  2. normal=(1 2 3 4 5 6 7 8 9)
  3. invertido=($(echo "${normal[@]}" | tac -s ' '))
  4. echo -e "Invertido : ${invertido[@]}";
  5.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
santiago.lz

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Una mano con bash
« Respuesta #3 en: 7 Julio 2010, 20:36 pm »

Muchas gracias :)

Si no es molestia tengo 2 consultas mas.

Primero si alguien sabe de algun "vi online" o una cosa asi, para poder probar lo que hago porque se me esta complicando hacerlo en block de notas y no tener donde probar.

Segundo, tengo q hacer un comando que corte un archivo en x partes iguales y cada parte la comprima usando el gzip. La sintaxis seria asi: $0 [-g] -n Archivo, donde -g comprime las partes restantes, -n dice en cuantas partes hay que cortar el archivo y Archivo es el archivo a cortar.

Esto es lo que pude hacer, pero cuando lo probe no me funciono

Código:
//primero miro el tamaño del archivo
tamArchivo = 'du $3'

//luego calculo que tamaño va a tener cada parte resultante
partes = $(($tamArchivo / $2))

//esto deberia cortar el archivo en el tamaño que le pido y comprimirlo pero no me funciono, capaz esta mal la sintaxis
split -b $partes $3 $3 | gzip


Saludos y gracias de nuevo.
« Última modificación: 7 Julio 2010, 20:45 pm por santiago.lz » En línea

Ni patria, ni dios, NACIONAL NACIONAL NACIONAL!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines