Salve, come da titolo devo controllare se una stringa compare in un file di testo. Eseguo la grep -c che mi restituisce il numero di volte che trova la stringa. Il problema nasce quando vadoa fare una if su questo valore restituito. Ecco il codice:

   prova= grep -c "$oldstr" pippo.txt
   echo $prova 
   if [ $prova -eq 0 ]
  then 
         echo "*** !!MAC non presente inserisci nuovo mac!! ***"
         modifymac    
   fi

Errore : line 35: [: -eq: unary operator expected non capisco a cosa sia dovuto..

chiesto 21 Apr '17, 11:17

andrearossi's gravatar image

andrearossi
0345

Io toglierei $prova = e controllerei il valore di $? (l'esito dell'ultimo comando eseguito)

(21 Apr '17, 11:47) er68 er68's gravatar image

intendi il valore di prova?Se si, ho controllato ed e' 0 ma non entra nella if.

(21 Apr '17, 11:59) andrearossi andrearossi's gravatar image

Hai bisogno di sapere se la stringa è presente oppure quante ce ne sono?

(29 Apr '17, 08:51) er68 er68's gravatar image

Fare

prova= comando

non ha nessun senso. Non è necessario usare -c per avere il numero e poi confrontarlo, è sufficiente controllare il codice di uscita di grep:

if ! grep -q "$oldstr" pippo.txt; then
  echo "*** !!MAC non presente inserisci nuovo mac!! ***"
  modifymac
fi
coll. permanente

ha risposto 22 Apr '17, 22:05

enzotib's gravatar image

enzotib ♦♦
14.1k113187

GRazie mille enzotib! Funziona perfettamente

(24 Apr '17, 09:45) andrearossi andrearossi's gravatar image

@andrearossi, se hai risolto dovresti accettare la risposta, e magari dalle un voto positivo.

(24 Apr '17, 15:43) enzotib ♦♦ enzotib's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×2,108
×106
×10

domanda posta: 21 Apr '17, 11:17

domanda visualizzata: 1,797 volte

ultimo aggiornamento: 29 Apr '17, 08:51

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.