Das ist nicht der Fehler, wie jeder unschwer feststellen kann, der Linux-Scripte lesen kann :smile:
Im Kontext sieht die geänderte Zeile so aus:
Die Schleife "for TESTCAM in ...." greift nur, wenn der verwendete oscam nicht auf korrekte Art und Weise aus dem Namen des init-Scriptes ermittelt werden kann.
Kleine Exkursion in Linux-Scripting:
$0 in einem Script enthält den Namen des Scriptes selbst, also bei Aufruf von "/etc/init.d/softcam start" enthält die Variable $0 den Wert "/etc/init.d/softcam", bei Aufruf von "/etc/init.d/softcam.oscam-stable start" den Wert "/etc/init.d/softcam.oscam-stable".
$1 enthält dann den ersten Parameter, in den beiden Beispielen also "start"; $2 den zweiten, usw. usf.
Der Befehl "readlink" zeigt die Datei an, auf die ein Link verweist und bei "&&" fährt bash nur dann mit dem Rest der Zeile fort, wenn das Ergebnis "wahr" ist, das
"readlink $0 > /dev/null 2>&1 &&"
aus
"readlink $0 > /dev/null 2>&1 && CAM=$(basename $(readlink $0) | sed s#^softcam\.##)"
testet also sozusagen, ob das aufgerufene Script überhaupt ein Link ist (Wenn es keiner ist, ist das Ergebnis "false") und verwirft alle Ausgaben (">/dev/null 2>&1").
Wenn das aufgerufene Script über einen Link woanders hin verweist, dann füllt das darauf folgende
"CAM=$(basename $(readlink $0) | sed s#^softcam\.##)"
die Variable CAM, in der Art, daß der Link aufgelöst wird, also wird aus "/etc/init.d/softcam" z.B. "/etc/init.d/softcam.oscam-stable", basename reduziert das dann auf den Dareinamen, streicht also den Pfad, damit wird daraus nur noch "softcam.oscam-stable" und sed entfernt dann das "softcam." daraus, so daß nur noch "oscam-stable" übrig bleibt.
Das nun folgende
"[ -z "$CAM" ] && CAM=$(basename $0 | sed s#^softcam\.##)"
macht genau das selbe für die Fälle, in denen das aufgerufene Script
kein Link ist, also wenn /etc/init.d/softcam.oscam-stable direkt aufgerufen wird.
Auf diese Weise
funktioniert das Script ohne jede Änderung sofort für jeden beliebigen oscam.
Wenn man sich seinen eigenen oscam als "oscam-humstibumsti" in /usr/bin abspeichert und das Script /etc/init.d/softcam.oscam-stable (oder /etc/init.d/softcam.oscam-trunk oder welches der Scripte auch immer man grad da hat, es ist sowieso in all meinen oscam-Paketen das selbe!) nach /etc/init.d/softcam.oscam-humstibumsti kopiert, kann man im SoftCAM-Setup auch oscam-humstibumsti auswählen und somit starten ....
Diese Auto-Erkennung versagt in den Fällen, in denen das Script falsch benannt wurde, also z.B. wenn das Script nicht nach /etc/init.d/softcam
verlinkt sondern
kopiert wurde oder wenn es komplett anders heißt ...
... nur in diesen Fällen sucht mein Start-Script einfach den erstbesten oscam, den es finden kann, und startet dann diesen ...
... diesen Hack habe ich eigentlich nur für mich selber eingebaut, denn als ich noch nicht selber den Feed gemanaged habe, lagen halt immer wieder auch ältere oscam-smod auf dem Feed als ich sie selber gebaut hatte.
Mit dem Hack konnte ich einfach die /usr/bin/oscam-smod aus dem älteren Paket löschen und das Script hat dann trotzdem selbständig meinen eigenen /usr/bin/oscam gefunden und gestartet.
Also: "Negativ, Houston!", das ist nicht das Problem. Da hat jemand nur die Hälfte vom Script verstanden.
Das Problem ist tatsächlich PEBKAC, wie vermutet und die Lösung ist eine ganz andere .... die schreibe ich aber in einen separaten Beitrag, weil Beiträge mit mehr als 3 Zeilen eh nicht gelesen werden, also an dieser Stelle nur noch 2 Leute mitlesen ...