Uno script in bash

tba221 tba221@libero.it
Sab 26 Feb 2005 00:01:38 CET


alexic wrote:
> Salve,
> mi sono ritrovato a dover realizzare uno script in bash.
> Questo script dovrebbe convertire molti file doc in pdf tramite wvPDF, 
> quindi comprimerli con il comando zip.
> 
> ###############
> #!/bin/bash
> $a='ls'
> for $a in $b
> do
>    wvPDF $b.doc $b.pdf
>    zip $b.pdf $b.zip
> done
> ################
> 
> Questo è quello che ho pensato di fare, tuttavia non funziona perchè i 
> file da zippare contengono nomi all'interno dei loro spazi quindi... 
> dovrei rinominare tutti i file? oppure c'è un altro metodo?

1) La prima riga dovrebbe essere #!/bin/bash e non la seconda (cmq,
questa è una fesseria);
2) l'apice singolo utilizzato in 'ls' non risolve la variabile ma
dichiara ls stessa come stringa, dovresti utilizzare il backtick o apice
rovesciato ` (alt+096);
3) dovrebbe essere "for b in $a" e non quello che hai scritto tu.

Questa è la mia versione:
----------------------------
#!/bin/sh
#
a=`ls`
for b in ${a//[= =]/_}
do
  wvPDF $b ${b/.doc/.pdf}
  zip ${b/.doc/.pdf} ${b/.doc/.zip}
done
---------------------------

in questo modo ogni file che contiene uno spazio e.g. "tba 221.doc"
verrà rinominato in "tba_221.doc".

Ciao, :-)
tba221

P.S. Ma la ML palermo@lists.linux.it funziona?



Maggiori informazioni sulla lista palermo