infocheck schrieb:Was bedeutet dieser Ausdruck
if [ ${0##*/} = "sim_todo" ];
if [ ................... ];
${0##*/}
script.sh
./script.sh
/root/bin/script.sh
../bin/script.sh
~root/bin/script.sh
echo $0 | sed 's/.*\///'
if [ $(echo $0 | sed 's/.*\///') = "sim_todo" ];
Also Parameter ist die Variable und ist "$0" und Pattern wäre das was wir suchen also "/" , probieren wir mal gleich innerhalb unserer Shell aus, "echo $0" gibt "/bin/bash" wir suchen nur "bash".${parameter##word}
Remove matching prefix pattern........the longest matching pattern (the ``##'' case) deleted.
echo ${0##/}
echo ${0##*/}
startscript
stopscript
script.sh start
script.sh stop
start
stop
leanUX schrieb:@robi: besser kann man es nicht erklären
leanUX schrieb:$0 bzw ${0} ist der Name des aufgerufenen scripts.
Das Ergebnis des Audrucks ${0##*/} ist der ursprüngliche Inhalt von $0,
reduziert um den längsten Match von */ (also beliebige Zeichenfolge die mit einem / endet)
vom Anfang her.
Beispiel:
Sagen wir $0 sei foobar/dingens/whatever , dann ist der längste match von */ vom Anfang her foobar/dingens/
um den wird $0 ja reduziert,
d.h. das Ergebnis wäre dann whatever
abgdf schrieb:Keine Ahnung, wozu Du das wissen willst.
robi schrieb:
Dann erledige doch bitte noch die Formalitäteninfocheck schrieb:Da Linux für mich recht neu ist, war das sehr hilfreich.
Ja.infocheck schrieb:Ganz einfach.abgdf schrieb:Keine Ahnung, wozu Du das wissen willst.
Ich darf mich in einen Code von einem Vorgänger einarbeiten.
Versöhnt Dich das ?
if test "$0" = "sim_tree"; then ...
echo "$0" | grep "^sim_tree"