Re: pipe como variable en bash

2018-02-08 Por tema Josu Lazkano
Buenas,

Gracias a todos, al final lo he hecho con "read":

rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null |
EfergyRPI_001 | bash /opt/MiScript.sh

#!/bin/bash

while read efergy
do
vatios=$(echo $efergy | cut -c19-28)
...
done

Gracias y un saludo.

El día 6 de febrero de 2018, 17:55, Erick Ocrospoma
 escribió:
> Lo mejor que podrias hacer es comentar que es lo que quieres lograr, no como
> crees que debes hacerlo y no te funciona :-)
>
> Creo que te funcionaria como argumento si usas xargs:
>
> # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy |
> xargs MiScript.sh
>
> Luego capturas el argumento en una variable (dentro del script)
>
> On Sun, Feb 4, 2018 at 4:52 PM petrohs el compa obrero 
> wrote:
>>
>> a mi se me ocurre
>>
>> export variable="$(rtl_fm -f 43350 -s 20 -r 96000 -g 19.7
>> 2>/dev/null | Efergy)";
>>
>> y ya podrias usar la variable dentro de MiScript.sh
>
>
> Otra forma también seria Esta de arriba, aunque debería ser ir asi:
>
> export variable=$(rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null
> | Efergy)
>
> Lo puedes guardar en el /etc/bash.bashrc, luego cargas dicha variable dentro
> de tu script asi (lo puedes poner debajo del shebang, la primera línea del
> script):
>
> #!/bin.bash
> . /etc/bash.bashrc
>
>>
>> On Sun, Feb 4, 2018 at 3:34 PM, fernando sainz
>>  wrote:
>>>
>>> El día 4 de febrero de 2018, 21:32, Josu Lazkano
>>>  escribió:
>>> > Buenas,
>>> >
>>> > Tengo un pequeño problema de scripting que no se como resolver.
>>> > Dispongo de un comando que me da el consumo eléctrico de mi casa:
>>> >
>>> > # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
>>> >
>>> > Lo que quiero es redirigir esta salida a un script en bash y tratar la
>>> > salida como una variable. Algo así:
>>> >
>>> > # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
>>> > | MiScript.sh
>>>
>>>
>>> >
>>> > El problema es que no se como capturar la variable, he probado con
>>> > "$1" pero solo sirve para argumentos.
>>> >
>>> > ¿Alguien me pude ayudar?
>>> >
>>> > Gracias por todo y un saludo.
>>> >
>>> > --
>>> > Josu Lazkano
>>> >
>>>
>>> No entiendo muy bien lo que preguntas.
>>> Creo que podrías poner en tu script llamadas a "read" (man bash) que
>>> lee una linea de la entrada estándar.
>>>
>>>
>>>read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N
>>> nchars] [-p
>>>prompt] [-t timeout] [-u fd] [name ...]
>>>   One line is read from the  standard  input,  or  from  the
>>> file
>>>   descriptor  fd supplied as an argument to the -u option,
>>> and the
>>>   first word is assigned to the first name, the second word
>>> to the
>>>   second  name, and so on, with leftover words and their
>>> interven‐
>>>   ing separators assigned to the last name.  If  there  are
>>> fewer
>>>   words read from the input stream than names, the remaining
>>> names
>>>   are assigned empty values.  The characters in IFS  are
>>> used  to
>>>   split  the  line  into words using the same rules the shell
>>> uses
>>>   for expansion (described above under Word Splitting).  The
>>> back‐
>>>   slash  character  (\)  may be used to remove any special
>>> meaning
>>>   for the next character read and for line continuation.
>>> Options,
>>>   if supplied, have the following meanings:
>>>
>>> S2.
>>>
>>
>>
>>
>> --
>> "Cada cual según sus fuerzas, cada quien según sus necesidades..."
>
> --
>
>
> Erick.
>
>
> ---
> IRC :   zerick
> Blog: http://zerick.me
> About :  http://about.me/zerick
> Linux User ID :  549567



-- 
Josu Lazkano



Re: pipe como variable en bash

2018-02-06 Por tema Erick Ocrospoma
Lo mejor que podrias hacer es comentar que es lo que quieres lograr, no
como crees que debes hacerlo y no te funciona :-)

Creo que te funcionaria como argumento si usas xargs:

# rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy |
xargs MiScript.sh

Luego capturas el argumento en una variable (dentro del script)

On Sun, Feb 4, 2018 at 4:52 PM petrohs el compa obrero 
wrote:

> a mi se me ocurre
>
> export variable="$(rtl_fm -f 43350 -s 20 -r 96000 -g 19.7
> 2>/dev/null | Efergy)";
>
> y ya podrias usar la variable dentro de MiScript.sh
>

Otra forma también seria Esta de arriba, aunque debería ser ir asi:

export variable=$(rtl_fm -f 43350 -s 20 -r 96000 -g 19.7
2>/dev/null | Efergy)

Lo puedes guardar en el /etc/bash.bashrc, luego cargas dicha variable
dentro de tu script asi (lo puedes poner debajo del shebang, la primera
línea del script):

#!/bin.bash
. /etc/bash.bashrc


> On Sun, Feb 4, 2018 at 3:34 PM, fernando sainz <
> fernandojose.sa...@gmail.com> wrote:
>
>> El día 4 de febrero de 2018, 21:32, Josu Lazkano
>>  escribió:
>> > Buenas,
>> >
>> > Tengo un pequeño problema de scripting que no se como resolver.
>> > Dispongo de un comando que me da el consumo eléctrico de mi casa:
>> >
>> > # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
>> >
>> > Lo que quiero es redirigir esta salida a un script en bash y tratar la
>> > salida como una variable. Algo así:
>> >
>> > # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
>> > | MiScript.sh
>
>
>> >
>> > El problema es que no se como capturar la variable, he probado con
>> > "$1" pero solo sirve para argumentos.
>> >
>> > ¿Alguien me pude ayudar?
>> >
>> > Gracias por todo y un saludo.
>> >
>> > --
>> > Josu Lazkano
>> >
>>
>> No entiendo muy bien lo que preguntas.
>> Creo que podrías poner en tu script llamadas a "read" (man bash) que
>> lee una linea de la entrada estándar.
>>
>>
>>read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N
>> nchars] [-p
>>prompt] [-t timeout] [-u fd] [name ...]
>>   One line is read from the  standard  input,  or  from  the
>> file
>>   descriptor  fd supplied as an argument to the -u option,
>> and the
>>   first word is assigned to the first name, the second word
>> to the
>>   second  name, and so on, with leftover words and their
>> interven‐
>>   ing separators assigned to the last name.  If  there  are
>> fewer
>>   words read from the input stream than names, the remaining
>> names
>>   are assigned empty values.  The characters in IFS  are
>> used  to
>>   split  the  line  into words using the same rules the shell
>> uses
>>   for expansion (described above under Word Splitting).  The
>> back‐
>>   slash  character  (\)  may be used to remove any special
>> meaning
>>   for the next character read and for line continuation.
>> Options,
>>   if supplied, have the following meanings:
>>
>> S2.
>>
>>
>
>
> --
> "Cada cual según sus fuerzas, cada quien según sus necesidades..."
>
-- 


Erick.


---
IRC :   zerick
Blog: http://zerick.me
About :  http://about.me/zerick
Linux User ID :  549567


Re: pipe como variable en bash

2018-02-04 Por tema petrohs el compa obrero
a mi se me ocurre

export variable="$(rtl_fm -f 43350 -s 20 -r 96000 -g 19.7
2>/dev/null | Efergy)";

y ya podrias usar la variable dentro de MiScript.sh

On Sun, Feb 4, 2018 at 3:34 PM, fernando sainz  wrote:

> El día 4 de febrero de 2018, 21:32, Josu Lazkano
>  escribió:
> > Buenas,
> >
> > Tengo un pequeño problema de scripting que no se como resolver.
> > Dispongo de un comando que me da el consumo eléctrico de mi casa:
> >
> > # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
> >
> > Lo que quiero es redirigir esta salida a un script en bash y tratar la
> > salida como una variable. Algo así:
> >
> > # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
> > | MiScript.sh
> >
> > El problema es que no se como capturar la variable, he probado con
> > "$1" pero solo sirve para argumentos.
> >
> > ¿Alguien me pude ayudar?
> >
> > Gracias por todo y un saludo.
> >
> > --
> > Josu Lazkano
> >
>
> No entiendo muy bien lo que preguntas.
> Creo que podrías poner en tu script llamadas a "read" (man bash) que
> lee una linea de la entrada estándar.
>
>
>read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars]
> [-p
>prompt] [-t timeout] [-u fd] [name ...]
>   One line is read from the  standard  input,  or  from  the
> file
>   descriptor  fd supplied as an argument to the -u option, and
> the
>   first word is assigned to the first name, the second word to
> the
>   second  name, and so on, with leftover words and their
> interven‐
>   ing separators assigned to the last name.  If  there  are
> fewer
>   words read from the input stream than names, the remaining
> names
>   are assigned empty values.  The characters in IFS  are
> used  to
>   split  the  line  into words using the same rules the shell
> uses
>   for expansion (described above under Word Splitting).  The
> back‐
>   slash  character  (\)  may be used to remove any special
> meaning
>   for the next character read and for line continuation.
> Options,
>   if supplied, have the following meanings:
>
> S2.
>
>


-- 
"Cada cual según sus fuerzas, cada quien según sus necesidades..."


Re: pipe como variable en bash

2018-02-04 Por tema fernando sainz
El día 4 de febrero de 2018, 21:32, Josu Lazkano
 escribió:
> Buenas,
>
> Tengo un pequeño problema de scripting que no se como resolver.
> Dispongo de un comando que me da el consumo eléctrico de mi casa:
>
> # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
>
> Lo que quiero es redirigir esta salida a un script en bash y tratar la
> salida como una variable. Algo así:
>
> # rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
> | MiScript.sh
>
> El problema es que no se como capturar la variable, he probado con
> "$1" pero solo sirve para argumentos.
>
> ¿Alguien me pude ayudar?
>
> Gracias por todo y un saludo.
>
> --
> Josu Lazkano
>

No entiendo muy bien lo que preguntas.
Creo que podrías poner en tu script llamadas a "read" (man bash) que
lee una linea de la entrada estándar.


   read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p
   prompt] [-t timeout] [-u fd] [name ...]
  One line is read from the  standard  input,  or  from  the  file
  descriptor  fd supplied as an argument to the -u option, and the
  first word is assigned to the first name, the second word to the
  second  name, and so on, with leftover words and their interven‐
  ing separators assigned to the last name.  If  there  are  fewer
  words read from the input stream than names, the remaining names
  are assigned empty values.  The characters in IFS  are  used  to
  split  the  line  into words using the same rules the shell uses
  for expansion (described above under Word Splitting).  The back‐
  slash  character  (\)  may be used to remove any special meaning
  for the next character read and for line continuation.  Options,
  if supplied, have the following meanings:

S2.



pipe como variable en bash

2018-02-04 Por tema Josu Lazkano
Buenas,

Tengo un pequeño problema de scripting que no se como resolver.
Dispongo de un comando que me da el consumo eléctrico de mi casa:

# rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy

Lo que quiero es redirigir esta salida a un script en bash y tratar la
salida como una variable. Algo así:

# rtl_fm -f 43350 -s 20 -r 96000 -g 19.7 2>/dev/null | Efergy
| MiScript.sh

El problema es que no se como capturar la variable, he probado con
"$1" pero solo sirve para argumentos.

¿Alguien me pude ayudar?

Gracias por todo y un saludo.

-- 
Josu Lazkano