Archief - scripting vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fragske

Legacy Member
#!/bin/bash
echo "looking for $1"
echo

find /home/fragske -type f -name $1 -print

if [ $? = "0" ]

then
echo "$1 Exists"
else
echo "Can't find $1"
fi

Dit is mijn scriptje. Nu mijn probleem is zelfs als het bestand niet bestaat hij toch nog altijd 0 weergeeft bij echo $?
Dus de opdracht is succesvol zelfs als hij het bestand niet kan vinden. Hoe los ik dat nu het beste op ? :)

Tis waarschijnlijk iets simpel, maar ik vind het maar niet.

fragske

Legacy Member
Ik heb misschien wel een oplossing maar dan zit ik nog met een probleem. Hoe kan ik de output opvangen van find /home/fragske -type f -name lalala -print ?
Want dat geeft het path weer van waar het bestand staat.

dan zou ik bv test -f output kunnen doen

InFerNo

Legacy Member
Of het ligt aan mij, maar

if [ $? = "0" ]

then
echo "$1 Exists"
else
echo "Can't find $1"
fi


ge zegt hier precies, als $? = 0 dan '$1 exists', anderzijds 'can't find $1'

fragske

Legacy Member
$? geeft de uitkomst van uw laatste opdracht weer.
Als het nul is was het succesvol (zonder errors)
als het één is, waren er errors.

RpR

Legacy Member
fragske zei:
$? geeft de uitkomst van uw laatste opdracht weer.
Als het nul is was het succesvol (zonder errors)
als het één is, waren er errors.

zijn het de "" niet?
"" wilt meestal zeggen tekst.

fragske

Legacy Member
Denk het niet, zonder de quotes werkte het ook niet.

Maar ik heb ondertussen al gevonden, of toch nen workaround


#!/bin/bash
echo
echo "looking for $1"
echo
find /home/fragske -type f -name $1 > /var/tmp/zoekopdracht
echo

uitkomst=`cat /var/tmp/kut | grep -o $1`

if [ $uitkomst = "$1" ]

then
echo "`cat /var/tmp/zoekopdracht` is where the file seems to be
hidden"

else
echo "Can't find $1"
fi

Maar volges mij kan het toch vele simpeler.

fragske

Legacy Member
Heb het meneige gewoon beetje te moeilijk gemaakt. Dit werkt al vele beter :)

#!/bin/bash
echo
echo "looking for $1"
echo
uitkomst=`find /home/fragske -type f -name $1 | grep -o $1`
echo

if [ $uitkomst = "$1" ]

then
echo "`find /home/fragske -type f -name $1` is where the file seems to be
hidden"

else
echo "Can't find $1"
fi

dontcopymusic

Legacy Member
De reden waarom je eerste scriptje niet werkte is omdat je een fout maakt in je if-statement.

Als je zegt if [ $? = "0" ] dan betekent dat zoveel als steek in variabele '?' de string "0", dat zal altijd lukken dus is je voorwaarde altijd voldaan.

Wat wel zal werken is dit: if [ $? -eq 0 ]
Hier is je voorwaarde waar als de exit code van het laatst gerunde programma (= $?) gelijk is aan nul en vals in alle andere gevallen.

Check Bash scripting Tutorial - Linuxconfig.org voor meer info ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan