Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

BASH problem

[es] :: Linux :: BASH problem

[ Pregleda: 1791 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

NikolaVeber
NikolaVeber
neradnik na porodiljskom bolovanju
Karlsruhe

Član broj: 5115
Poruke: 1254
*.sosig.sulinet.hu

Jabber: nikolaveber@jabber.org
ICQ: 121532865


Profil

icon BASH problem19.11.2002. u 07:26 - pre 260 meseci
Pozdrav !

Imam problem oko kreiranja bash scripta koji pokrece g++ kompajler i output smesta u promenljivu.

errormsg=`g++ /root/dir/fajl.cpp`

zanima me da li je moguce da se program pokrene, a da poruku o greski upise samo u promenljivu, a ne da je prikaze u shellu.
Takodje me zanima da li se sa
if [ -n $errormsg ]
moze utvrditi da li je prazna ili ne i kako (probao sam sve kombinacije sa -n i -z , ali nije pokazivalo ocekivane rezultate)...

Hvala !
Pop Servis "Paradise Tours"
Java User Group Karlsruhe
IT Dan - Srbija

Officer, I saw the driver who hit me - his name was Johnny Walker.
 
Odgovor na temu

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.verat.net

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: BASH problem19.11.2002. u 12:55 - pre 260 meseci
Problem je u tome što obrnuti navodnici uzimaju podatke sa stdout fajl deskriptora, a tebi treba stderr (poruka o grešci). Na žalost, mislim da u Bourne shellu ne postoji jednostavan način da se u promenljivu smesti stderr izlaz (ne može se čak ni pajpovati stderr u drugu komandu), tako da je najlakše rešenje da slepiš sve zajedno na stdout.

Code:
errormsg=`g++ /root/dir/fajl.cpp 2>&1`


Ako hoćeš samo stderr, onda bi morao nešto u stilu

Code:
g++ /root/dir/fajl.cpp 2> /tmp/errormsg.$$ \
&& errormsg=`cat /tmp/errormsg.$$` \
&& rm /tmp/errormsg.$$


U C shellu bi to moglo i jednostavnije.

Ovo [ -n $errormsg ] vraća true ako string nije prazan, i radi sasvim dobro, osim ako se desi da je string prazan ;o). Jer onda neće ni biti parametra koji može da se ispituje i komanda će se svesti na [ -n ]. Rešenje je da string staviš među navodnike -- [ -n "$errormsg" ] -- u ovom slučaju će čak i ako je string prazan biti evaluirani prazni navodnici -- [ -n "" ], pa će biti sve kako si naumio.
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

[es] :: Linux :: BASH problem

[ Pregleda: 1791 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.