Foros del Web » Administración de Sistemas » Unix / Linux »

ayuda con shell script

Estas en el tema de ayuda con shell script en el foro de Unix / Linux en Foros del Web. Holas.... dado que no tengo muchos conocimientos hacerca de shell scripts (y muchas otras cosas ) .... y que he estado tratando de hacerlo por ...
  #1 (permalink)  
Antiguo 23/08/2003, 06:23
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 21 años, 11 meses
Puntos: 0
ayuda con shell script

Holas....

dado que no tengo muchos conocimientos hacerca de shell scripts (y muchas otras cosas ) ....
y que he estado tratando de hacerlo por mi mismo pero sin resultados positivos! les pido me ayuden hacer este script...

el dilema es el siguiente:

tengo un directorio que contiene fichoros *.c y *.o todos los *.c tienen su correspondiente *.o pero todos los *.o no tienen *.c



lo que necesito es hacer un script que me copie todos los *.c y sus correspondientes *.o a un directorio difernete a donde estan...(solo esto...)

segun se ve es sencillo, pero dado que no se bash para mi es complicado!

__________________
Siempre hago lo que quiero...
Aunque no quiera...
  #2 (permalink)  
Antiguo 23/08/2003, 11:32
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 11 meses
Puntos: 0
Código:
#!/bin/bash

for i in *.c; do
  O_FILE = $i.o
  if  [ -e $O_FILE ]; then
    cp $i.c $i.o directorio/
  fi
done
Si me he equivocado seguro que es algo muy parecido

Por cierto, sugerencia: http://www.zonasiete.org/manual/multi/ch07.html

Y si algo te parece que no está bien, de paso nos ayudas a mejorarlo.


Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico
  #3 (permalink)  
Antiguo 24/08/2003, 21:32
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 22 años, 4 meses
Puntos: 0
Me estoy leyendo el manual de zonesite... estoy en:

http://www.zonasiete.org/manual/multi/ch07s04.html

y estoy haciendo esa práctica, tengo este script:

Código:
#! /bin/bash

echo "Lista archivos existentes"
ls /home/herohat/www/webmodular
echo " "
echo "El valor del retorno fue: $?"
echo " "
echo " "
echo "Lista archivos que NO exiten"
ls /home/herohat/blabla
echo " "
echo "El valor del retorno fue: $?"

exit

se supone que en el primer caso devuelve 0 y en el segundo otro número pero no fue así, me salio:


[herohat@exo bash]$ bash retorno.sh
Lista archivos existentes
actualizar busca.php fecha.js pag1.php pag3.php pag5.php softnet-team.jpg
archivoscv contador.txt index.php pag2.php pag4.php pag_contenido.sql template.php

El valor del retorno fue: 0


Lista archivos que NO exiten
ls: /home/herohat/blabla: No such file or directory

El valor del retorno fue: 0






Que paso hay?.
  #4 (permalink)  
Antiguo 25/08/2003, 04:33
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 11 meses
Puntos: 0
Pues verás, si pones el comando anterior el

echo " "

Este siempre devolverá 0, porque siempre tendrá exito. La variable $? tiene el valor de retorno del comando ejecutado inmediatamente antes. Es por esto que el ejemplo textual:

Código:
#!/bin/bash

echo "Listando archivo existente..."
ls archivo_existente
echo "El valor de retorno fue: $?"

echo " "

echo "Listando archivo inexistente..."
ls archivo_inexistente
echo "El valor de retorno fue: $?"

exit
debería funcionar correctamente. Porque está inmediatamente después del comando que produce el error.

Aunque siempre tienes la opción de guardar el valor de retorno de un comando en otra variable para hacer uso de él más tarde:

Código:
#!/bin/bash

ls archivo_inexistente
RETVAL=$?

## Aquí pongo las líneas que quiera

echo "El valor de retorno del listado de"
echo "unas líneas antes fue: $RETVAL"
Espero que sirva.

Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico

Última edición por lical; 25/08/2003 a las 04:38
  #5 (permalink)  
Antiguo 25/08/2003, 07:33
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 21 años, 11 meses
Puntos: 0
holas.. gracais lical...

voy a probar tu script...

[holas de nuevo... jejejj
ya probe el scrip, pero no funca del todo bien, peta con los *.o, por el tema que $i trae todo el *.c y pues cuando haces la asignacion O_FILE = $i.o pues O_FILE queda con lo siguiente: *.c.o con lo cual no encontrara el *.c.o ; lo que no entiendo es por que me copia los *.c si eso esta dentro de un IF (SI) bueno estudiare un poquillo al respecto...]

les cuento que ya lo he solucionado de otra forma, la posteo aqui por si alguien le sirve:

find . -type f -name '*.c' print | while read aux
do
string=`basename $aux .c`
string=$string.o
cp $string directorio/
done
__________________
Siempre hago lo que quiero...
Aunque no quiera...

Última edición por kapachov; 25/08/2003 a las 07:43
  #6 (permalink)  
Antiguo 25/08/2003, 08:15
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 22 años, 4 meses
Puntos: 0
Joya lical.... ya sabes novatadas de principiante, pero ya le estoy cojiendo la honda a la programación en shell script.
  #7 (permalink)  
Antiguo 26/08/2003, 06:46
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 21 años, 11 meses
Puntos: 0
bueno decirles que la solucion no la encontre yo! un compañero y yo pertenecemos a una lista y el pregunto y esta fue la respuesta....


Suerte!!
__________________
Siempre hago lo que quiero...
Aunque no quiera...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:13.