Author |
Message |
simargl
Joined: 11 Feb 2013 Posts: 572
|
Posted: Wed 15 May 2013, 06:40 Post subject:
. |
|
.
Last edited by simargl on Sun 01 Sep 2013, 12:04; edited 3 times in total
|
Back to top
|
|
 |
Karl Godt

Joined: 20 Jun 2010 Posts: 4208 Location: Kiel,Germany
|
Posted: Wed 15 May 2013, 07:24 Post subject:
|
|
probably try to use grep -m1 or grep | tail -n1 so if more than one line in /tmp/output it piks the first or the last , so if tail at the very end might be already get one single line after all the sed edits .
cat /tmp/output | grep is seen everywhere, but grep /tmp/output should do it also .
|
Back to top
|
|
 |
simargl
Joined: 11 Feb 2013 Posts: 572
|
Posted: Wed 15 May 2013, 08:09 Post subject:
|
|
.
Last edited by simargl on Sun 01 Sep 2013, 11:09; edited 1 time in total
|
Back to top
|
|
 |
Karl Godt

Joined: 20 Jun 2010 Posts: 4208 Location: Kiel,Germany
|
Posted: Wed 15 May 2013, 08:15 Post subject:
|
|
Quote: | while [ "$(pidof yad)" ]; do |
Sometimes seems not to work as it could.
Probably missing a break, since the test for "$(pidof yad)" might only run once at while begin.
Probably needs additionally a
[ "$(pidof yad)" ] || break
inside it to stop the current loop. Otherwise you'll probably have multiple instances of the while loop running .
like
Code: | while [ "$(pidof yad)" ]; do
sleep 5s
[ -f /tmp/output ] || break
[ "$(pidof yad)" ] || break
NEW_TITLE=$(grep 'StreamTitle' /tmp/output | tail -n1 | sed 's|ICY Info: StreamTitle=||g' | sed 's/;[^-]*$//' | sed s/"'"/" "/g)
if [[ "$NEW_TITLE" != "$TITLE" ]]; then
notify-send -i simple-radio "$action" "$NEW_TITLE"
TITLE="$NEW_TITLE"
fi
done |
|
Back to top
|
|
 |
simargl
Joined: 11 Feb 2013 Posts: 572
|
Posted: Wed 15 May 2013, 08:32 Post subject:
|
|
.
Last edited by simargl on Sun 01 Sep 2013, 11:09; edited 1 time in total
|
Back to top
|
|
 |
Karl Godt

Joined: 20 Jun 2010 Posts: 4208 Location: Kiel,Germany
|
Posted: Wed 15 May 2013, 10:48 Post subject:
|
|
No GUI freak here, and know nothing about yad.
You have yad GUI and yad --notification .
Probably this is confusing things , so running a new instance of the yad gui would prevent the loop from exiting/breaking.
Otherwise yad --notification might need killall -9 which almost every time succeeds .
You should remove the >/dev/null s to have a better view on things .
|
Back to top
|
|
 |
PANZERKOPF
Joined: 16 Dec 2009 Posts: 282 Location: Earth
|
Posted: Wed 15 May 2013, 11:47 Post subject:
Re: lost inside while loop |
|
simargl wrote: | like variable $action |
IIRC:
Loop runs as a separate process so all variables inside it are not visible by parent process.
_________________ SUUM CUIQUE.
|
Back to top
|
|
 |
technosaurus

Joined: 18 May 2008 Posts: 4787 Location: Kingwood, TX
|
Posted: Thu 16 May 2013, 01:30 Post subject:
|
|
Please don't poll for file changes.
Code: | touch /tmp/file #make sure it exists
inotifyd - /tmp/file:c |while read DUMMY; do
echo actions to do when file is changed
done & |
inotifyd will be dormant (using almost no resources) until awakened by an inotify event from the kernel (no polling) - you can get 500 events in 1 second or have the process running dormant for days and it would pop right up as soon as the file changes
Note: inotifyd can monitor stuff other than just changes (:c) including entire directories
_________________ Check out my github repositories. I may eventually get around to updating my blogspot.
|
Back to top
|
|
 |
simargl
Joined: 11 Feb 2013 Posts: 572
|
Posted: Thu 16 May 2013, 03:45 Post subject:
|
|
.
|
Back to top
|
|
 |
|