Newsgroup: it.comp.os.linux.iniziare
Titolo: cd in script bash

Salve,
come faccio a fare una cosa di sto tipo?
#!/bin/bash
echo "directory path?"
read path
cd $path    # <------- il problema e' qui
for i in $( ls )
echo $i
il fatto e' che cd $dir non cambia dir...
Insomma, con uno script dovrei fare operazioni sui files di una dir
specificata dall'utente e lo script si deve trovare in un posto
qualunque.
grazie
mirko
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 mirko
scusate, errore banale mio, risolto.


 for i in $( ls )
1) sarebbe bastato for i in *
2) gia` hai fatto cd, dovresti avere 
un errore del tipo: file mancante

 
MA dai... al posto di $path in uno script devi mettere di leggere il
parametro sulla riga di comando.
Cioè
cd $1
ciao
Giulio

 cd $1
Tu sai anche leggere, oltre che scrivere?
Leggi lo script, specialmente nel punto dove dice: read path
Che dopo il for e' sbagliato, ma fino li' funziona.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 cd $1
Chiedere un parametro da console e` un errore di stile 
ma qui non e` in discussione la differenza tra i 
programmi Unix ed i programmi DOS, ne` tra lo stile 
del Pascal e del C.
Ne` e` in discussione la mancanza del do dopo il for.
Piuttosto qui si tratta di come si chiede aiuto:
Non e` stato postato il messaggio di errore;
Non e` stato detto lo scopo del programma 
ne` quello che nell'intenzione del programmatore 
doveva fare, ossia non sono stare date le 
specifiche;
Una volta scoperto l'errore non e` stato 
specifivcato nell'oggetto risolto, cioe` qualcosa 
del tipo: Re: cd in script bash - RISOLTO! 
E soprattutto non e` stato detto questo errore 
quale era.
Quest'ultima cosa e' una grande mancanza
di educazione ed una stupidaggine.
Prima di tutto nega che i principianti possano 
imparare dagli errori, non solo il principiante
che ha scritto il post ma anche il principiante 
che lo legge (ed anche chi non e` piu' principiante).
Poi ci potrebbero essere altri errori nella soluzione.
Ed infine e` una grave forma di egoismo: si pretende 
aiuto ma non lo si vuole dare.
Si` in questo caso si vede la buona volontà di
mirko ma proprio per questo faccio questo richiamo
affinche' non si scoraggi ma per spronarlo a seguire
la via dell' hacker.
http://www.catb.org/~esr/
poco 

 di educazione ed una stupidaggine.
dio madonnina...
meritata la pertinente critica per non aver riportato l'errore segnalato
dallo script, la finalita' dello stesso e la mancata notifica della
soluzione... ma da qui all'egoismo ne passa parecchio.
il peccato che mi si puo' imputare e' l'avventatezza, ho postato con
leggerezza senza rilegggere con attenzione il materiale che ho trovato
in rete. la pessima scusa che posso presentare e' l'ora tarda del post.
 
rimedio seppur in ritardo.
lo script serve a convertire file dv in avi, i primi specificati dal
path inserito dall'utente.
la versione dello script che ho postato era un esempio di codice che mi
serviva implemetare, lo script originale non dava nessun errore,
semplicemente lavorava nella directory in cui era stato lanciato e non
in quella esplicitata in path.
esattamente non so dove stava l'errore perche' morivo di sonno.
il (modesto) script funzionante segue
#!/bin/bash
echo -n "Full path of DV files directory: - "
read PATH_DIR_AV
cd $PATH_DIR_AV
for i in $( ls ); do
FILE=${i%.*}
mencoder $FILE.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1700 -vf
pp=fd -oac mp3lame -lameopts vbr=3 -o $FILE.avi
done
la qualita' degli avi fa schifo, ma questo esula dal thread.
devo studiarmi mencoder
mirko


 done
a parte che forse sarebbe stato opportuno aggiungere un "cd $DIR_ORIGINARIA"
in coda, penso possa essere utite suggerirti un altro approccio:
for i in "${PATH_DIR_AV}/"*.dv; do
    ...
done
in questo modo
1) non hai bisogno di cambiare directory per niente,
2) imposti un filtro tra i file su cui lavorare (solo i .dv)
3) non hai problemi con eventuali file con spazi nei nomi (ad esempio, prova
ad eseguire il tuo script in una cartella con dentro un unico file
chiamato "video con spazi.dv")
-- 
Under construction

 esplicitata in  path...
Senza saper nè leggere nè scrivere:
(cd nuovadirectory && scriptoriginale)
E non tocchi nulla che non hai scritto tu.