Newsgroup: it.comp.os.linux.iniziare
Titolo: interpretazione errata variabile lunga

in uno script per graphicsmagick, voglio salvare le immagini (scansioni a 
doppia facciata) con la stessa qualità che hanno gli originali
per far ciò, ho pensato di creare la variabile *quality*
quality="gm identify -verbose `ls *.jpg | head -n1`| grep Quality | cut -d: -f2"
che legge (con identify) il fattore di compressione jpeg dalla prima immagine
della serie (`ls *.jpg | head -n1`), poi individua la riga con Quality e infine
isola il valore (cut -d: -f2)
ma testandola con un echo
quality="gm identify -verbose `ls *.jpg | head -n1`| grep Quality | cut -d: -f2" ; echo $quality
ottengo
gm identify -verbose img-000.jpg| grep Quality | cut -d: -f2
invece del valore che ho, se uso l'insieme di comandi senza inserirlo
in una variabile
# gm identify -verbose `ls *.jpg | head -n1`| grep Quality | cut -d: -f2
68
quindi è evidente che sbagli qualcosa
-- 
Puppy Linux wiki:  
http://dokupuppylinux.tk
Puppy Linux Forum: 
http://www.italianpuppy.org/
Windows me genuit, Ubuntu rapuere / tenet nunc Puppy Linux...

 quindi è evidente che sbagli qualcosa
quality=$(gm identify -verbose $(ls *.jpg | head -n1) | grep Quality | cut
-d: -f2)
(tutto sulla stessa linea)
sorvolo sul resto, tanto sicuramente arrivera' qualcun altro a fartelo
notare.
-- 
Cio' che si vede, e'.

 notare.
[...]
riconosco la mia insipienza (grande) e cercherò di fare meglio in futuro


 notare.
Infatti è arrivato chi farà notare il resto. Però l'unico 
errore è postare un pezzo di codice senza dire cosa vuoi 
fare in realtà.. Ad esempio.
quality=$(gm identify -verbose $(ls *.jpg | head -n1) | 
  grep Quality | cut -d: -f2)
che sarebbe meglio implementare come:
quality=$(gm identify -verbose "$(find . -maxdepth 1 -name '*.jpg' -print0 |
   sort -z |  
   awk 'BEGIN {RS="\0"}; {print ; exit}' ) "  |
  grep Quality | 
  cut -d: -f2-)
Cosa dovrebbe fare? Esiste un altro strumento per ottenere
lo stesso risultato? Il pezzo di codice:
ls *.jpg | head -n1
Che scopo ha? Così dovrebbe selezionare il primo file secondo
l'ordinamento alfanumerico (se non avesse un bug); a cosa ti
serve farlo? Vuoi fare veramente questo?
E così via.

 `ls *.jpg | head -n1`
Deprecated
$(ls *.jpg | head -n1) #e' la moda d' oggi
-- 
Archlinux on (uname -a)
F

 l'ordinamento alfanumerico (se non avesse un bug); a cosa ti serve farlo?
[...]
mi occorre per conoscere il fattore di compressione di una serie di 
immagini che estraggo da un pdf, siccome tutte hanno lo stesso fattore di 
compressione, basta sapere il primo per poi applicarlo a tutte le altre
questi comandi fanno parte di uno script che:
taglia a metà le scansioni jpeg a doppia facciata, crea una cartella in 
cui riporle e quindi ce le sposta come pagine singole tagliate dopo avervi 
posposto le lettere A e B per un corretto ordinamento (A = dispari B = 
pari)
le coordinate di ritaglio sono calcolate automaticamente dividendo a metà 
la larghezza della prima immagine (uguale a quella di tutte le altre 
successive) usando la variabile $first con l'impiego di identify (lo 
script è per graphicsmagick, ma basta togliere *gm* e funziona anche con 
imagemagick*
eccolo qui: (versione su pastebin: 
http://pastebin.com/iSL8JGy9
)
#!/bin/sh
if [ ! -e even-odd ]; then mkdir even-odd; fi
first="`ls -1 *.jpg | head -n1`"
let "halfwidth=`gm identify -format '%w \n' "$first"`/2" 
width="`gm identify -format '%w \n' "$first"`"
height="`gm identify -format '%h \n' "$first"`"
quality="$(gm identify -verbose $(ls *.jpg | head -n1) | grep Quality | 
cut -d: -f2)"
for FILE in *.jpg ; do gm convert -quality $quality -crop 
"$halfwidth"x"$height"+0+0 "$FILE" "$FILE-A.jpg" ; mv `ls *.jpg | grep A` 
even-odd ; gm convert -quality $quality -crop 
"$width"x"$height"+"$halfwidth"+0 "$FILE" "$FILE-B.jpg" && mv `ls *.jpg | 
grep B` even-odd
 done ; 
ho ancora qualche problema poiché data una immagine a doppia facciata
img-0001.jpg il risultato è:
img-0001.jpg-A.jpg
img-0001.jpg-B.jpg
e non correttamente: 
img-0001-A.jpg
img-0001-B.jpg
qui c'è una immagine scansionata a doppia facciata per eventuali test:
http://ifile.it/reja8yz


 
http://ifile.it/reja8yz
Forse il debug dovresti farlo tu