JBlack Skrevet 30. mai 2005 Skrevet 30. mai 2005 (endret) 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 30. mai 2005 av JBlack
☀ ❄ Skrevet 30. mai 2005 Skrevet 30. mai 2005 (endret) man basename Edit: Ok, det er egentlig så enkelt at TFM er unødvendig. echo "Usage: `basename $0` blablablabla" Endret 30. mai 2005 av Myubi
JBlack Skrevet 30. mai 2005 Forfatter Skrevet 30. mai 2005 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.
Entropi Skrevet 25. juli 2005 Skrevet 25. juli 2005 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. ${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.)
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå