Bash errore "atteso operatore unario"

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
antau
Prode Principiante
Messaggi: 41
Iscrizione: giovedì 15 dicembre 2011, 10:25

Bash errore "atteso operatore unario"

Messaggio da antau »

Questione probabilmente banale per molti...
Codice che dovrebbe togliere lo spazio nel nome di un file e sostituirlo con un undescore:

Codice: Seleziona tutto

#! /bin/bash
for filename in *
do
     echo $filename | grep -q " "
     if [ $? -eq $FOUND ];
     then
       fname=$filename
       n='echo $fname | sed -e "s/ /_/g"'
       mv "$fname" "$n"
     fi
     echo $fname
done 
Il risultato via terminale è questo:

Codice: Seleziona tutto

/home/antonio/scripts/nuovo.sh: riga 5: [: 1: atteso operatore unario

/home/antonio/scripts/nuovo.sh: riga 5: [: 1: atteso operatore unario

/home/antonio/scripts/nuovo.sh: riga 5: [: 1: atteso operatore unario

/home/antonio/scripts/nuovo.sh: riga 5: [: 1: atteso operatore unario

/home/antonio/scripts/nuovo.sh: riga 5: [: 1: atteso operatore unario

/home/antonio/scripts/nuovo.sh: riga 5: [: 0: atteso operatore unario
Il risultato identifica il file con uno spazio nel nome(il quinto dove compare lo 0), non lo rinomina e mi da quell'errore.
Usando bash nel terminale.

Qualcuno sa dirmi dove è l'errore....?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Bash errore "atteso operatore unario"

Messaggio da crap0101 »

$FOUND non esiste.
btw, c'è rename per queste cose.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti