Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2006-06-22 14:14:35

  FF - Członek DUG

FF
Członek DUG
Skąd: Łódź
Zarejestrowany: 2004-12-23

[bash] problem z warunkiem

Niedawno dodałem da faq skrypt wlasnej roboty:

Kod:

if [ -z `pgrep mpd` ]
then
  mpd
fi

działa na tej zasadzie ze pgrep wypisuje pidy procesu (tu mpd) a warunek -z sprawdza czy podany lancuch jest pusty jak tak to uruchamia mpd.
Mpd jest demonem ktory (najczesciej podczas odtwarzania muzyki) powiela sie i pgrep wtedy wywala cos takiego:

Kod:

rafal@~> pgrep mpd
3646
6511
6512

Poniewaz skrypt ten dodałem do .bashrc wykonywany jest zawsze podczas logowania sie oraz podczas uruchamiania terminala i tu jest problem gdy mpd jest trzy razy uruchominy (co jest zupelnie normalne), zalogowanie sie albo uruchomienie terminala powoduje ze jeszcze  przed promtem pojwaia sie tekst:

Kod:

bash: [: too many arguments

Gdy mpd "ma" jeden pid problem nie występuje.
Bede bardzo widzieczny za pomoc bo ze skrypceniu w bashu jestem noga, to jest jedyny skrypt który napisałem ;)

Offline

 

#2  2006-06-22 14:24:31

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [bash] problem z warunkiem

Może zamiast:
if [ -z `pgrep mpd` ]
wysarczy
if [ ! `pgrep mpd` ]


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#3  2006-06-22 14:50:27

  FF - Członek DUG

FF
Członek DUG
Skąd: Łódź
Zarejestrowany: 2004-12-23

Re: [bash] problem z warunkiem

teraz dostaje

Kod:

bash: [: 6511: binary operator expected

Offline

 

#4  2006-06-22 15:12:33

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [bash] problem z warunkiem

Kolejna propozycja to:
if [ `pgrep -c mpd` -eq "0" ]


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#5  2006-06-22 15:15:25

  FF - Członek DUG

FF
Członek DUG
Skąd: Łódź
Zarejestrowany: 2004-12-23

Re: [bash] problem z warunkiem

Jednak najprostrze rozwiazania sa najlepsze wystarczy do pgrepa dodac opcje -n która powoduje ze wypisany jest tylko pid najmlodszego porcesu

Kod:

if [ -z `pgrep -n mpd` ]
then
  mpd
fi

EDIT:
czadman wyprzedziles mnie troche ;)
PS
dzieki za pomoc

Offline

 

#6  2006-06-22 15:19:48

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [bash] problem z warunkiem

rzekłbym: many, many i jeszcze raz many :D


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)