[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Sobre script bash




----- Mensaje original -----
> De: fernando sainz <fernandojose.sainz@gmail.com>
> Para: "debian-user-spanish@lists.debian.org" <debian-user-spanish@lists.debian.org>
> CC: 
> Enviado: jueves, 20 de junio de 2013 13:26
> Asunto: Re: [OT] Sobre script bash
> 
> El día 20 de junio de 2013 18:19, Julian Perconti
> <vh1988@yahoo.com.ar> escribió:
>>  ----- Mensaje original -----
>>>  De: fernando sainz <fernandojose.sainz@gmail.com>
>>>  Para: "debian-user-spanish@lists.debian.org" 
> <debian-user-spanish@lists.debian.org>
>>>  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
>>>  <vh1988@yahoo.com.ar> escribió:
>>>>   ----- Mensaje original -----
>>>>>   De: fernando sainz <fernandojose.sainz@gmail.com>
>>>>>   Para: Julian Perconti <vh1988@yahoo.com.ar>
>>>>>   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
>>>>>   <vh1988@yahoo.com.ar> 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
>>>  debian-user-spanish-REQUEST@lists.debian.org
>>>>>>    with a subject of "unsubscribe". Trouble? 
> Contact
>>>>>   listmaster@lists.debian.org
>>>>>>    Archive:
>>>>> 
>>> 
> [🔎] 1371739576.91232.YahooMailNeo@web160205.mail.bf1.yahoo.com">http://lists.debian.org/[🔎] 1371739576.91232.YahooMailNeo@web160205.mail.bf1.yahoo.com
>>>>>> 
>>>>> 
>>>> 
>>>>   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.
 
No se muy entendido del tema, pero yo xargs (buscando en google) lo use por el tema de los archivos que contienen espacios. Este script lo estoy corriendo en un entorno de prueba donde casualemente no hay archios con espacios.
 
> 
> Si usas el bucle for, quita el xargs y pon el chgp en el cuerpo del for.
> S2.
 
Y el los ficheros con espacios como los manipulo?
 
Saludos!
> 
> 
> --
> To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact 
> listmaster@lists.debian.org
> Archive: 
> [🔎] CAGw=rHgeh-CVLgT8CfFYZOdrJH2Rhb2QXgevzZqchccVOvN4Mg@mail.gmail.com">http://lists.debian.org/[🔎] CAGw=rHgeh-CVLgT8CfFYZOdrJH2Rhb2QXgevzZqchccVOvN4Mg@mail.gmail.com
>


Reply to: