1. "Designfrage": Hast du dich bewusst für bash statt sh entschieden? Das einzige bash-Feature, das du momentan nutzt, ist der Gleichheitstest mit "==" statt "=".
Genau aus diesem Grunde habe ich den "shebang" auch erstmal auf "#!/bin/bash" belassen. Zudem ist es im ursprünglich von
thinkwiki.org/wiki/How_to_hotswap_Ultrabay_devices übernommenen Script genau so definiert.
2. Bei der Verkettung von Überprüfungen mittels "-a" oder "-o" aufpassen! Bspw. [usr/share/ultrabay-scripts/]ultrabay_common, Zeile 56:
Code:
if [ ! -n "$battery" -a -d "$battery" ]; then
Das "!" verhält sich wie ein Vorzeichen (unärer Operator) und wirkt damit nur auf "-n $battery". Ist mit Blick auf die nachfolgenden Aktionien mEn nicht beabsichtigt. Vermutlich hast du hier "-n $battery -a -d $battery" verneinen wollen, was sprachlich "exit, falls $battery leerer String und/oder $battery-Verzeichnis fehlt" entspricht,
Das entstammt indirekt dem bestehenden Code aus Zeile 18 ("if [ -n "$dock" -a -d "$dock" ]; then") des bereits oben genannten
Scripts von thinkwiki.org, den ich einfach genau so übernahm und entsprechend anpasste, nachdem ich ihn gemäss der man page zu "[" wie folgt verstand und zu nutzen beabsichtigte: "EXPRESSION1 -a EXPRESSION2 = both EXPRESSION1 and EXPRESSION2 are true". Allerdings wäre das im beabsichtigten Kontext trotzdem nicht richtig, wie Du korrekt erkannt hast, sondern tatsächlich besser genau das von Dir vorgeschlagene Konstrukt:
Code:
if [ -z "$battery" ] || [ ! -d "$battery" ]
then
...
Das betrifft dann gleich die beiden Funktionen "ultrabay_dock_interface ()" und "ultrabay_battery_interface ()" in /usr/share/ultrabay-scripts/ultrabay_common, und wird gleich mit der nächsten Ausgabe behoben worden sein. Sehr schön, dass Du mich darauf aufmerksam gemacht hast! Es geht doch nichts über einen direkten Hinweis auf einen blinden Fleck!
Allein die Tatsache, dass man erst eine man page bemühen muss, um sich einen offensichtlich missverständlichen Ausdruck zu verdeutlichen, nur um ihn im gegebenen Kontext dann doch nicht richtig zu verstehen, bestätigt eigentlich bestens, dass er durch einen eindeutigeren Ausdruck ersetzt werden sollte.
Danke auch dafür, mich auf diesen peinlichen Fehler aufmerksam gemacht zu haben, bevor ihn mir linrunner gnadenlos um die Ohren schlägt!
EDIT: ultrabay-scripts (0.8-1) ist ab sofort von
sourceforge.net/projects/wmlive/files/ultrabay-scripts verfügbar.