[linux-l] Re: Existenz eines Programmes herausfinden

Volker Grabsch vog at notjusthosting.com
Do Apr 13 03:20:28 CEST 2006


On Thu, Apr 13, 2006 at 02:49:14AM +0200, Mike Dornberger wrote:
> On Wed, Apr 12, 2006 at 10:44:19PM +0200, Volker Grabsch wrote:
> > Mein persönlicher Favorit war übrigens (in Perl):
> >     system("$BEFEHL --help >/dev/null 2>/dev/null") == 0
> > 
> > (Natürlich kommt $BEFEHL nur aus einer fest eingebauten Liste.)
> 
> was machst du, wenn $BEFEHL --help nicht unterstützt? Also einen Fehler
> wirft oder die Kommandozeilen nicht beachtet/falsch interpretiert und dann
> $IRGENDWAS macht (rm -rf / *g*)?

Ein Programm, das bei "BEFEHL --help" irgendwas Dummes macht, wird
es ganz sicher niemals in die Compiler-Suites schaffen. Ich habe
alle Kandidaten überprüft, selbst "dllwrap" und "windres" verhalten
sich bei "--help" korrekt.

Was die Programm-Ausgabe angeht: Die kann die Shell gar nicht falsch
verstehen, sie leitet das alles schließlich nach /dev/null. Das
einzige blöde, das passieren kann, ist dass das Programm bei "--help"
mit nem Fehler (Exitcode != 0) abbricht. Und diese einzige Sorge
hat sich in der Praxis nichtmal bestätigt.

> perl -e 'for $x (split ":", $ENV{PATH}){print "$x\n";}'

So ähnlich macht das dpkg-cross.pl auch.

> (IFS=":"; for x in $PATH; do echo $x; done)

Auch nett, daran habe ich gar nicht gedacht, das Trennzeichen einfach
kurz abzuändern. Cool.


Aber "command -v" ist mit Abstand die beste Lösung, das musst du
zugeben ... :-)


Viele Grüße,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l