← Back to team overview

sslug-teknik team mailing list archive

Re: Bash-mystik - eller er det xview der driller ?

 

Jan Holst Jensen wrote:
Hej.

Jeg har gjort et bittelille script (en one-liner) der
gør det nemt for mig at kigge på billeder vha. xview.
Nu opstod morsomhederne så da jeg fik nogle billeder
med mellemrum i filnavnene. For nu gider xview ikke
længere tage imod filnavnene fra scriptet, men gerne
direkte fra kommandolinien. Jeg er dybt forvirret.

Jeg har forsøgt at debugge det ved at køre scriptets
trin manuelt:

  jhje@flyvehest:~/test$ export params=`for image in
*.jpg; do echo \
     "-zoom 50 \"$image\""; done;`
  jhje@flyvehest:~/test$ export cmd="xview $params"

og nu skulle $cmd så indeholde hele kommandolinien med
korrekt quotede filnavne. Det gør den da også:

  jhje@flyvehest:~/test$ echo $cmd
  xview -zoom 50 "01 januar.jpg" -zoom 50 "02
februar.jpg"

Men når jeg forsøger at køre den brokker xview sig:

  jhje@flyvehest:~/test$ $cmd
  "01: image not found
  januar.jpg": image not found
  "02: image not found
  februar.jpg": image not found

Mens jeg godt kan køre det hvis jeg copy/paster
direkte ind på kommando-linien:

  jhje@flyvehest:~/test$ xview -zoom 50 "01
januar.jpg" -zoom 50\
  "02 februar.jpg"
  01 januar.jpg is a 2272x1704 JPEG image, color space
YCbCr, 3 comps, Huffman coding.
  Zooming image by 50%...done
  Building XImage...done
  02 februar.jpg is a 1704x2272 JPEG image, color
space YCbCr, 3 comps,
  Huffman coding.
  Zooming image by 50%...done
  Building XImage...done
jhje@flyvehest:~/test$
Hvad er det lige jeg ikke har forstået om bash-quoting
eller xview's særheder ?

Din quoting ser umiddelbart rigtig ud, men det dog en besværlig måde at lave et script på. Man gemmer da ikke scripts som environment variable, scripts lægges i en exekverbar fil.
Prøv istedet at lave en fil, som indeholder denne kommando:
for image in *.jpg; do xview -zoom 50 "$image"; done;


--
Med venlig hilsen

Jørgen Heesche
mailto:heesche@xxxxxxxxxxx
Registered Linux User #401007


Follow ups

References