* Am Don, 27 Feb 2003 schrieb Peter Bergmann:
#!/bin/bash
SEARCH=$1
ABS_PATH=`pwd`
find $ABS_PATH -name "*.rpm" -exec echo {} \; | while read RPM ^^^^^^^^^ ^^^^^^^^^^^^^^^^ Wie wärs einfach mit der man find -> -print Angabe "." fürs aktuelle -exec echo ist mit Kanonen Verzeichnis? auf Spatzen geschossen.
Hallo Christoph, hallo Peter, hallo Leute, wo wir gerade so schön beim Script-Verbessern sind, will ich auch noch eine kräftige Portion Senf dazugeben ;-) Am Freitag, 28. Februar 2003 08:00 schrieb Christoph Maurer: pwd musst Du dafür nicht extra aufrufen ;-)
do
rpm -qpl --provides $RPM | grep $SEARCH > /dev/null 2>&1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Die Ausgabe dieses Befehls brauchst Du ja später nochmal, von daher wäre RESULT=`rpm -qpl --provides $RPM | grep $SEARCH` anzuraten. (evtl. noch 2>/dev/null einfügen, wenn nötig. Allerdings dürften in diesem Konstrukt IMHO keine Fehlermeldungen auftauchen.)
RET=$?
if [ $RET -eq 0 ]
Useless use of [ ]!
Nicht nur das ;-) IMHO auch Useless use of if ;-) So, ich bastel mal den Rest des Scripts in die Mail rein ;-)
then
echo "===========================" printf "PACKAGE: \t $RPM \n" printf "COMPONENT: \t $SEARCH \n" printf "INSTALL-PATH: \n" rpm -qpl --provides $RPM | grep $SEARCH
fi
Wieso eigentlich printf? Meine Empfehlung: #!/bin/bash SEARCH=$1 find . -name "*.rpm" -print | while read RPM ; do RESULT=`rpm -qpl --provides $RPM | grep $SEARCH` && { \ echo "===========================" echo -e "PACKAGE: \t $RPM" echo -e "COMPONENT: \t $SEARCH" echo -e "INSTALL-PATH:" echo $RESULT } done Gerade getestet - hat sogar den Vorteil, dass der Exitcode des Scripts != 0 ist, wenn nichts passendes gefunden wird ;-) Alternativ kannst Du nach dem done noch die Ausgabe einer Fehlermeldung veranlassen, also done || echo "$SEARCH not found!" >&2 Allerdings dürfte dieses echo immer gutgehen und setzt deshalb den Exitcode wieder auf 0, ist also nicht wirklich gut. Wenn Du eine Fehlermeldung _und_ einen Exitcode != 0 willst, verwende dieses Schnipsel (statt nur "done"): done || { \ EXITCODE=$? echo "$SEARCH not found" exit $EXITCODE } Gruß Christian Boltz PS: Ich bevorzuge das Setzen des Exitcodes. Grund 1: ist scripttechnisch verwertbar ;-) Grund 2: wird in meinem Prompt angezeigt, und zwar rot hinterlegt. (aber nur, wenn != 0) Inhalt meiner $PS1 auf Anfrage ;-) PPS: Falls Du den "Trick" mit && und || nicht kennst, schau mal in man bash nach. Bei Verständnisfragen zu meiner Version des Scripts kannst Du gern nachfragen. -- Error: File not found -- search behind couch? (Y/N)