Newsgroup: it.comp.os.linux.iniziare
Titolo: problema scriptino

come mai questo :
for f in recoded/*.rm; do mv "$f" "${f/rm/avi}"; done
se lo lancio da shell funziona ma se lo metto in uno script mi da errore?
nb lo script e nella stessa directory dove ci sono i file da rinominare

 nb lo script e nella stessa directory dove ci sono i file da rinominare
-- 
|   Maurizio Loreti -- 
ROT13:ybe...@cq.vasa.vg
   |  (@_
| Un. of Padova, Dept. of Physics, Padova, Italy |  //\
|     
http://www.pd.infn.it/~loreti/mlo.html
     |  V_/_

 che errore?  forse "command not found"?
gia' ecco qua'
  script.sh: 20: Syntax error: Bad substitution
nonostante da shell sia nella cartella directory giusta


Giusto per essere sicuri...
1) che hai alla linea 20 di script.sh?
2) che hai come prima linea di script.sh?
3) se metti "set -x" giusto prima della linea 20, che ti dice?
Ciao,
-- 
        Roberto Divia`              Love at first sight is one of the greatest
Dep:PH Bat:53 Mailbox:C02110      labour-saving devices the world has ever seen
Route de Meyrin 385               ---------------------------------------------
Case Postale                                Phone:  
+41-22-767-4994
CH-1211 Geneve 23 CERN                      Fax:    
+41-22-767-9585
Switzerland                                 E-Mail: 
Robert...@cern.ch

 writes:

scusa, non per essere polemico --- ma cosa c'e' nella linea 20 di
script.sh?  tu prima hai postato un one-liner...


 
ecco qua' lo scriptino per intero
  #!/bin/sh
  echo "scriptino v0.3"
  mkdir recoded
  for i in *.rm
  do
  mencoder "$i" -vop scale=640:480 -o "recoded/$i" -of avi -ovc lavc 
-lavcopts vcodec=mpeg4:vbitrate=1700:vme=4:mbd=1 -ffourcc -ofps 15 DIVX 
-oac mp3lame -lameopts br=128:q=9:aq=9:cbr:mode=1
  done
  for i in *.avi
  do
  mencoder "$i" -vop scale=640:480 -o "recoded/$i" -of avi -ovc lavc 
-lavcopts vcodec=mpeg4:vbitrate=1500:vme=4:mbd=1 -ffourcc DIVX -oac 
mp3lame -lameopts br=128:q=9:aq=9:cbr:mode=1
  done
  for f in recoded/*.rm; do mv "$f" "${f/rm/avi}"; done   <<<-linea 20

  for f in recoded/*.rm; do mv "$f" "${f/rm/avi}"; done   <<<-linea 20
Lo script  sembra a posto, non è che hai qualche nome di file strano che
lo incasina?
Tra l'altro metterei un ${f/.rm/.avi} per evitare problemi con nomi che
contengono rm (armageddon.rm diventa aaviageddon.rm non armaggedon.avi
come ti aspetteresti).
Ciao
Ercole

 Tra l'altro metterei un ${f/.rm/.avi} per evitare...
Per evitare questo dovresti scrivere ${f/%.rm/.avi} 
altrimenti il file ninty.rms.squared.rm diventa
ninty.avis.squared.rm

 Per evitare questo dovresti scrivere ${f/%.rm/.avi} 
Giusto..
Ciao
Ercole

   #!/bin/sh
           ^^ !!!!
Una illuminazione: sei sicuro che 
/bin/sh corrisponda alla bash ?
Non tutte le shell hanno l'espansione 
dei parametri.
Ed anche se /bin/sh si riferisce alla 
bash invocandola cosi` la bash cerca 
di conformarsi allo standard POSIX e 
disabilita molte caratteristiche (e
potrebbe dare l'errore riportato).
La cura:
#! /bin/bash
 

 L'ho provato con nomi di file doppi è funziona...
                                      ^ !!! senza accento.
Non c'entra con l'errore riportato.
Comunque io mi riferivo al caso di due file con 
nomi identici ma diversa estensioine (ie: alien.rm 
& alien.avi)

 /bin/sh corrisponda alla bash ?
Spiegherebbe come mai in interattivo va mentre lo script non funge...


 & alien.avi)
Si era quello che intendevo (non poteva avere 2 file con nomi identici
nella stessa directory)
Ciao
Ercole

 
si e' la cura giusta grazie