[suse-linux-s] [OT] Ayuda con Script
Estoy tratando de automatizar un proceso que consiste en: un usuario pone archivos del tipo .war en una carpeta /ruta/upwar/ por ejemlo, pone los archivos siguiente: clientes.war, departamentos.war lo que trato de hacer es un scrip que haga lo siguiente: 1. verifica si hay archivos nuevos en /ruta/upwar/ 2. borra las carpetas con el nombre del archivo en /ruta/final/war/, en este caso las carpetas /ruta/final/war/clientes/ y /ruta/final/war/departamentos/ 3. copia los archivos clientes.war y departamentos.war de /ruta/upwar/ a /ruta/final/war/ 4. borrar los archivos clientes.war y departamentos.war de /ruta/upwar/ luego poner en un archivo de /var/log/control.alx que se han actualizado los archivos clientes.war y departamentos.war. yo realice un scrip para un archivo especifico, clientes.war y todo funciona como quiero, el problema es cuando el usuario me pone archivos con nombres diversos, por ejemplo deudas.war, estadisticas.war, nombres que no estan en mi script,, saben de alguna forma de como puedo hacer que el scrip haga este proceso para cualquier nombre de archivo que exista en /ruta/upwar/ ? me imagino con un bucle pero no tengo idea de como almacenar en una variable del tipo arreglo los nombres de los archivos listados en /ruta/upwar/, o algo asi, y luego usarlo en el bucle,,, espero que puedan ayudarme con esto. Saludos JCarlos -- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
Buen día.
Puedes utilzar varias alternativas, entre una de ellas se me ocurre utilizar
parametros o variables, por ejemplo si tu scrip es para un archivo en
especifico podrias utilizar lo siguiente:
#./scritp.sh FILENAME
y dentro del scritp utilzar:
rm $1.war
ya que $0 te da el comando como tal, y el $1 el primer parametro.
Otra opcion es que dentro de tu script utilices el comando "read" por
ejemplo
#!/bin/bash
echo "HELLO WORLD"
echo "Que archivo deseas borrar?"
read archivo
rm $archivo.war
En fin como te comente hay varias alternavias, espero que te haya podido
ayudar.
Saludos.
On 6/27/06, Juan Carlos Bravo Celis
Estoy tratando de automatizar un proceso que consiste en:
un usuario pone archivos del tipo .war en una carpeta /ruta/upwar/
por ejemlo, pone los archivos siguiente: clientes.war, departamentos.war
lo que trato de hacer es un scrip que haga lo siguiente:
1. verifica si hay archivos nuevos en /ruta/upwar/ 2. borra las carpetas con el nombre del archivo en /ruta/final/war/, en este caso las carpetas /ruta/final/war/clientes/ y /ruta/final/war/departamentos/ 3. copia los archivos clientes.war y departamentos.war de /ruta/upwar/ a /ruta/final/war/ 4. borrar los archivos clientes.war y departamentos.war de /ruta/upwar/ luego poner en un archivo de /var/log/control.alx que se han actualizado los archivos clientes.war y departamentos.war.
yo realice un scrip para un archivo especifico, clientes.war y todo funciona como quiero, el problema es cuando el usuario me pone archivos con nombres diversos, por ejemplo deudas.war, estadisticas.war, nombres que no estan en mi script,, saben de alguna forma de como puedo hacer que el scrip haga este proceso para cualquier nombre de archivo que exista en /ruta/upwar/ ? me imagino con un bucle pero no tengo idea de como almacenar en una variable del tipo arreglo los nombres de los archivos listados en /ruta/upwar/, o algo asi, y luego usarlo en el bucle,,, espero que puedan ayudarme con esto.
Saludos
JCarlos
-- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2006-06-27 a las 12:48 -0500, Juan Carlos Bravo Celis escribió:
forma de como puedo hacer que el scrip haga este proceso para cualquier nombre de archivo que exista en /ruta/upwar/ ? me imagino
for FILE in `ls /ruta/upwar/*war` ; do echo $FILE done Esa es una manera, aunque fallará si el nombre del fichero contiene espacios. Otra manera: while read FILES ; do echo $FILE done < fichero_lista ésta funciona leyendo una linea cada vez de "fichero_lista", lo que te permite hacer un proproceso de la misma. También se podría generar un array, pero no tengo ejemplos, me parece que no lo he hecho. Y también se puede usar "find" en vez de "ls", lo que permite mayor flexibilidad al buscar los archivos. - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFEoYputTMYHG2NR9URAt5nAJ9mKleGrX7VsJfqgEdkLWldbxdj9QCfTGPO uFbKT0dl8yXGDbi/4ULRNE4= =/AY5 -----END PGP SIGNATURE----- -- Para dar de baja la suscripci�n, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
Hola :) El Martes, 27 de Junio de 2006 21:43, Carlos E. R. escribió:
El 2006-06-27 a las 12:48 -0500, Juan Carlos Bravo Celis escribi�:
forma de como puedo hacer que el scrip haga este proceso para cualquier nombre de archivo que exista en /ruta/upwar/ ? me imagino
for FILE in `ls /ruta/upwar/*war` ; do echo $FILE done
Esa es una manera, aunque fallar� si el nombre del fichero contiene espacios.
Otra manera:
while read FILES ; do echo $FILE done < fichero_lista
�sta funciona leyendo una linea cada vez de "fichero_lista", lo que te permite hacer un proproceso de la misma.
Tambi�n se podr�a generar un array, pero no tengo ejemplos, me parece que no lo he hecho.
Y tambi�n se puede usar "find" en vez de "ls", lo que permite mayor flexibilidad al buscar los archivos.
find es mucho más potente, pero tn cuidado por si te quedas sin buffer, a lo mejor también te interesa usar xargs. Échale un vistazo a: http://www.tldp.org/LDP/abs/html/index.html Es bastante bueno :) Rafa -- "Even paranoids have enemies." Rafa Grimán Systems Engineer Silicon Graphics Spain Santa Engracia, 120 - Planta Baja 28003 Madrid Spain Tel: +34 91 3984200 Tel: +34 91 3984201 Móvil: +34 628 117 940 http://www.sgi.com OpenWengo: rgriman Skype: rgriman -- Para dar de baja la suscripci�n, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
participants (4)
-
Carlos E. R.
-
Gilberto I. Monroy Lopez
-
Juan Carlos Bravo Celis
-
Rafa Grimán