Kolla om en fil finns i $PATH [bash]

Här pratar vi programmering i dessa olika former. Perl, C/C++, Pascal, ADA, Lisp, COBOL, ZX Basic och mm.
Post Reply
kratz
Posts: 1121
Joined: 9 May 2005, 17:21
Location: ~/Högsby
Contact:

Kolla om en fil finns i $PATH [bash]

Post by kratz » 13 January 2008, 12:34

Kolla in följande ful-kod:

Code: Select all

EXISTD=$(ls /sbin/dhclient 2> /dev/null)
EXISTI=$(ls /usr/sbin/iwconfig 2> /dev/null)

if [ ! $EXISTD ] ; then
        echo " "
        echo "Du saknar dhclient!"
        echo "Programmet kräver dhclient!"
        echo " "
        echo "Avslutar ..."
        exit
else
        if [ ! $EXISTI ] ; then
                echo " "
                echo "Du saknar wireless_tools!"
                echo "Trådlöst kommer ej att fungera!"
        fi
fi
Den kollar ju om /sbin/dhclient samt /usr/sbin/iwconfig finns. Detta är inte speciellt intressant, utan det skulle vara intressantare om den kunde kolla om dhclient och iwconfig fanns i $PATH eftersom alla lär ju inte ha binärerna på samma ställen som jag. Hur gör jag det enklast? Jag har fått hjärnsläpp.
Välkommen till http://archlinux.se !

User avatar
li
Posts: 1124
Joined: 17 April 2003, 13:38
Location: Stockholm

Post by li » 13 January 2008, 13:46

Funkar det inte att skriva:

whereis -b xxx

Jag testade:

whereis -b iwconfig
iwconfig: /sbin/iwconfig

whereis -b yxa
yxa:

Alltså står det något efter ":" så finns programmet i sökvägen
gentoo 3.0
arch 3.0
freeBSD 8.2
qemu/minix3
win/xp

kratz
Posts: 1121
Joined: 9 May 2005, 17:21
Location: ~/Högsby
Contact:

Post by kratz » 13 January 2008, 14:10

Det går säkert, men jag är inte så duktig på dethär, så jag vet inte hur jag skulle lösa det rent praktiskt.

Jag vill helst ha något som ger ett true/false värde. Jag vill alltså fråga typ "finns dhclient i path? svar: true. Om ni förstår.

Jag tycker det borde gå att skriva något i stil med:
EXISTD=$(ls $PATH/dhclient 2> /dev/null) , men det vill sig inte.
Välkommen till http://archlinux.se !

ErikW
Posts: 82
Joined: 13 June 2003, 21:38

Post by ErikW » 14 January 2008, 11:33

Här kommer ett tips som kanske inte är den snyggaste, men den funkar...

Utnyttja det faktum att grep returnerar 1 om strängen hittas, annars 0
whereis -b dhclient | grep -v '/' > /dev/null
hasdhclient=$?

hasdhclient är nu 1 om dhclient finns, 0 annars...

kratz
Posts: 1121
Joined: 9 May 2005, 17:21
Location: ~/Högsby
Contact:

Post by kratz » 14 January 2008, 13:42

Tack! Jag ska testa det direkt efter jobbet.
Välkommen till http://archlinux.se !

kratz
Posts: 1121
Joined: 9 May 2005, 17:21
Location: ~/Högsby
Contact:

Post by kratz » 14 January 2008, 21:18

Det fungerade utmärkt!
Välkommen till http://archlinux.se !

Post Reply