El día 20 de junio de 2013 18:19, Julian Perconti <[email protected]> escribió: > ----- Mensaje original ----- >> De: fernando sainz <[email protected]> >> Para: "[email protected]" >> <[email protected]> >> CC: >> Enviado: jueves, 20 de junio de 2013 13:09 >> Asunto: Re: [OT] Sobre script bash >> >> El día 20 de junio de 2013 17:55, Julian Perconti >> <[email protected]> escribió: >>> ----- Mensaje original ----- >>>> De: fernando sainz <[email protected]> >>>> Para: Julian Perconti <[email protected]> >>>> CC: >>>> Enviado: jueves, 20 de junio de 2013 12:35 >>>> Asunto: Re: [OT] Sobre script bash >>>> >>>> El día 20 de junio de 2013 16:46, Julian Perconti >>>> <[email protected]> escribió: >>>>> Saludos, >>>>> Tengo el siguiente script basico para migrar permisos: >>>>> # BOF >>>>> #!/bin/bash >>>>> j=0 >>>>> echo "ID del GRUPO a buscar:" >>>>> read gida >>>>> echo "ID del GRUPO por el cual reemplazar a los que >>>>> se encuentren:" >>>>> read gidn >>>>> for i in `find $pwd -gid $gida -print0 | xargs -0 chgrp >>>> >>>> ¿Este salto de linea lo ha hecho el correo supongo? así estaría mal. >>>> >>>> veo algo extraño en el xargs, por defecto recibe cada valor devuelto >>>> por el find, no entiendo por que le pasas $i >>>> >>>> S2. >>>> >>>>> $gidn "$i"`; do >>>>> let j=j+1 >>>>> done >>>>> echo $j 'reemplazos' >>>>> #EOF >>>> >>>> >>>> >>>> >>>>> En si el script, funciona bien, es decir, los permisos se >>>>> cambian según los id proporcionados; el problema es que me arroja >> el >>>> siguiente >>>>> error: >>>>> chgrp: cannot access `': No such file or directory >>>>> Y el contador me da siempre 0. >>>>> Probé de escribirlo de formas distintas, por ejemplo >>>>> meter la salida en un tmp y luego cat tmp, etc.. >>>>> Alguna idea? >>>>> Aclaro que no soy programador ni mucho menos, asique toda >>>>> sugerencia/critica/mejora es bienvenida! >>>>> Gracias de antemano! >>>>> >>>>> >>>>> -- >>>>> To UNSUBSCRIBE, email to >> [email protected] >>>>> with a subject of "unsubscribe". Trouble? Contact >>>> [email protected] >>>>> Archive: >>>> >> http://lists.debian.org/[email protected] >>>>> >>>> >>> >>> Respondo a la lista: >>> >>> Bueno efectivamente le saque "$i" y el error desapareció pero >> sigue apareciendo otro: >>> >>> chgrp: cannot dereference >> `./.pulse/0494f201138428357ab0646c51ada1e2-runtime': No such file or >> directory >>> >>> Y la salida de sh -x: (antes de quitarle $i) >>> >>> root@debian:/home/julian# sh -x migraperm >>> + j=0 >>> + echo ID del GRUPO a buscar: >>> ID del GRUPO a buscar: >>> + read gida >>> 1000 >>> + echo ID del GRUPO por el cual reemplazar a los que se encuentren: >>> ID del GRUPO por el cual reemplazar a los que se encuentren: >>> + read gidn >>> 0 >>> + find -gid 1000 -print0 >>> + xargs -0 chgrp 0 >>> chgrp: cannot access `': No such file or directory >>> chgrp: cannot dereference >> `./.pulse/0494f201138428357ab0646c51ada1e2-runtime': No such file or >> directory >>> + echo 0 reemplazos >>> 0 reemplazos >>> >>> Sin embargo algo esta mal hecho y no me doy cuenta porque el contador sigue >> dando 0: >>> >>> root@debian:/home/julian# ./migraperm >>> ID del GRUPO a buscar: >>> 0 >>> ID del GRUPO por el cual reemplazar a los que se encuentren: >>> 1000 >>> 0 reemplazos >>> >>> El script quedó asi: >>> >>> #!/bin/bash >>> j=0 >>> echo "ID del GRUPO a buscar:" >>> read gida >>> echo "ID del GRUPO por el cual reemplazar a los que se >> encuentren:" >>> read gidn >>> >>> for i in `find $pwd -gid $gida -print0 | xargs -0 chgrp $gidn`; >>> do >>> let j=j+1 >>> done >>> echo $j 'reemplazos' >>> >>> Muchas gracias por sus prontas respuestas! >>> >> >> Creo que es un error de concepto. >> la salida del `find.....| xargs ...` va a estar vacía. Prueba a ejecutarlo >> solo. > > Es verdad Fernando, me estaba empezando a dar cuenta, aparentemente el let no > se esta ejecutando porque el contador es 0 (creo que es eso) > > La salida de ejecutarlo solo devuelvo solo una línea de error de no 'No such > file or directory'. > > Voy a buscar la forma de contar los elemento separadamente; de todas formas > no es algo critico (el script ya cumple su función), solo me entusiasme un > poco y quería imprimir en pantalla la cantidad de elementos modifiados. > >> >> S2. > > Saludos! >
Tu problema es que mezclas dos cosas, si se usa un pipe con xargs es precisamente para evitar el bucle for. Si usas el bucle for, quita el xargs y pon el chgp en el cuerpo del for. S2. -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/CAGw=rhgeh-cvlgt8cffyzodrjh2rhb2qxgevzzqchccvovn...@mail.gmail.com

