Gå til innhold

filnavnet til den kjørte fila/scriptet


Anbefalte innlegg

Holder på med et lite bash script, og vil ha en usage melding ala:

echo "Usage: $0 blablbalblba"

 

Men $0 returnerer hele pathen, f.x: /home/jblack/bin/mycoolscript.sh

Jeg vil kun ha selve filnavnet uten path: mycoolscript.sh

 

Hva er beste måten?

 

Edit: For læringens skyld, hvilke forskjellige rimelig enkle måter finnes det?

Endret av JBlack
Lenke til kommentar
Videoannonse
Annonse
  • 1 måned senere...
Tnx myubi, den er praktisk.

 

Jeg fant denne på nett ved å søke:

echo "Usage: ${0##*/} blabbla"

Jeg har ingen anelse om hvordan det fungerer. :hmm:

 

${0} inneholder full path til det kjørende programmet. Konstruksjonen ${a##b} sletter den lengste matchen av b fra begynnelsen av a. I eksemplet er b da "*/", som da vil slette alt frem til og med den siste forekomsten av '/' fra strengen ${0}. Dvs. i strengen "/path/til/program.sh" vil "/path/til/" bli slettet siden det er den lengste forekomsten av den ekspanderte "*/", og man står igjen med "program.sh".

 

man bash forklarer dette mer inngående og kanskje litt lettere enn meg. (Enkel måte å finne avsnittet på, er å skrive /##<enter> når man er i man-siden.)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...