Newsgroup: it.comp.os.linux.development
Titolo: While/do con controllo presenza di file con lo stesso nome

Ciao a tutti.
devo fare un controllo tipo 'while [ -e /path/NOMEFILE.* ]'; do
il problema è che se ci sono anche solo 2 file tipo NOMEFILE.00 NOMEFILE.01
mi da errore 'binary operator expected'
se invece copio nella path il primo file, e nel ciclo lo cancello e metto su
il secondo, il tutto funziona.
Come posso fare? Io avrei bisogno di metterli tutti insieme.
                  Ciao e grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 
Questo perche' il test di esistenza puo' essere fatto su un singolo file 
e non su una lista.
In alternativa si puo' usare ls e verificare che l'output sia vuoto:
while [ `ls /path/NOMEFILE.*` ]; do
Occhio agli apici.
Alessandro.

 devo fare un controllo tipo 'while [ -e /path/NOMEFILE.* ]'; do
la shell espande questa linea convertendo /path/NOMEFILE.* in una
lista di nomi separati da spazi, e da qui l'errore di sintassi.  io
controllerei quello che ritorna il comando
ls /path/NOMEFILE.* >/dev/null 2>&1 ...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg


Mi da lo stesso errore...
Ciao e grazie
Antonio


 ls /path/NOMEFILE.* >/dev/null 2>&1 ...
Scusa ma non comprendo, così com'è non mi ritorna niente il comando.
Grazie


 Grazie
No, ma subito dopo la variabile $? contiene 0 se i file c'erano, 1
altrimenti
Ciao
M$?

 altrimenti
oppure basta "if ls ...; then ...; else ...; fi


 Mi da lo stesso errore...
Ciao,
 questo perche' test si e' dimenticato di mettere un paio di doppi apici 
all'esterno degli apici inversi.
Sempre aggiungendo i doppi apici, echo invece di ls dovrebbe darti lo 
stesso risultato usando poco poco meno CPU.
 Ciao
 Federico

 
A me funziona anche cosi' (bash).
Alessandro.


Grazie a tutti, adesso funziona tutto.
Ciao!


 all'esterno degli apici inversi.
Si cosě funziona, grazie mille.
In pratica con i doppi apici viene effettuato il controllo sull'esito
positivo del comando?


 devo fare un controllo tipo 'while [ -e /path/NOMEFILE.* ]'; do
while [ \! "`ls /path/NOMEFILE.* 2>&1 | grep -v 'No such file'`" ]; do
while [ "`ls /path/NOMEFILE.* >/dev/null 2>&1; echo $?`" = "0" ]; do
while [ "`echo /path/NOMEFILE.*`" != "/path/NOMEFILE.*" ]; do
Il terzo medoto - il mio preferito - va meglio caricando una variabile di
environment con "/path/NOMEFILE.*"
S="/path/NOMEFILE.*"; while [ "`echo $S`" != "$S" ]; do
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

 positivo del comando?
No quelli servono a restituire un'unica stringa valida anche quando 
l'output ne contiene di più.
Ma vedo che ne sai molto poco, perché non dai un'occhiata all'advanced 
bash scripting che trovi su 
www.tldp.org
?
-- 
Lorenzo `paulatz' Paulatto
Trieste
``Se Gauss fosse vivo oggi, sarebbe un hacker.''
      --Peter Sarnak (Princeton University)


L'imbarazzo della scelta... grazie mille



Effettivamente mi cimento da una decina di mesi, e mi sono ripromesso piů
volte di andare a recuperare un manula ein qualche libreria (preferisco
leggere su carta), ma non ho mai tempo...
