Gå til innhold

Anbefalte innlegg

Skrevet

Sitter her og prøver meg på noe jeg ikke har så all verdens kjennskap til: Nemlig bash. Nå skal jeg kjøre et skript mot en samba-share hvor windows-brukerne har laget mange mappe- og filnavn med mellomrom i. Et nedkoket, typisk eksempel på det jeg lurer på:

file="moo/foo foo/bar.ext"
`dirname $file`

Hvordan skal jeg escape for at dirname skal forstå input og si at svaret er moo/foo foo/?

Videoannonse
Annonse
Gjest Slettet+6132
Skrevet

hvis du skriver ls -l i en mappe vil hvertfall mapper med mellomrom vises som foo\ bar

  • 4 uker senere...
Skrevet (endret)

Som nevnt tidligere.

Du kan prøve med \<mellomrom>, altså '\ '

Blir da

file="moo/foo\ foo/bar.ext"

Endret av Orjanp
  • 2 uker senere...
Skrevet (endret)

file="\"moo/foo foo/bar.ext\""

 

Det fungerer også. \ betyr her at det neste tegnet bare tolkes som et tegn uten funksjon.

 

Som du ser, er det mange utveier. ;)

 

BTW:

 

i stedet for `dirname $file` kan (og bør) du bruke $(dirname $file)

Endret av meastp

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...