Pagina 1 di 1

problema con script bash e if

Inviato: lun 14 ago 2006, 11:36
da nik600
ciao

dovrei fare un if su l'output di un programma

c'è un programma che mi stampa a video 1 o 0, io voglio assegnare 1 o 0 ad una variabile e poi fare un if su questa variabile

questo è il codice che ho scritto io:

codice:

Codice: Seleziona tutto

#!/bin/bash

SPAMPREF_PROGRAM=`/home/programmi/nik_spampref/bin/nik_spampref /home/programmi/nik_spampref/etc/conf1.conf info@prova.it`

echo $SPAMPREF_PROGRAM;

if ["$SPAMPREF_PROGRAM" = "1"]
then
    echo "consegno";

else
    echo "non consegno";

fi

e questo è l'outptu che ottengo:

Codice: Seleziona tutto


1
./prove: line 7: [1: command not found
consegno


dove sbaglio?

ho provato anche a paragonarli come interi, ma senza risultato:

if [$SPAMPREF_PROGRAM= 1]

Inviato: lun 14 ago 2006, 11:47
da masalapianta
= e' un operatore di assegnazione non di confronto, devi usare == o eq

Inviato: lun 14 ago 2006, 12:06
da absinthe
inserisci uno spazio tra le quadre ed il loro contenuto.

Codice: Seleziona tutto

utente@laptop:~$ if ["pippo"="pippo"]; then echo pippo; fi
-bash: [pippo=pippo]: command not found
utente@laptop:~$ if [ "pippo"="pippo" ]; then echo pippo; fi
pippo
da man bash:
string1 == string2
True if the strings are equal. = may be used in place of == for
strict POSIX compliance.
M

Inviato: lun 14 ago 2006, 12:18
da nik600
grazie, erano gli spazi!

Inviato: lun 14 ago 2006, 13:16
da nik600
ora ho un'altro problema...

vorrei assegnare ad una variabile il risultato di 2 comandi con la pipe:

Codice: Seleziona tutto


IS_SPAM= `/bin/grep X-Spam-Status:\ Yes /path/file | /usr/bin/wc -l`

if [ "$IS_SPAM" = "1" ]
then
    echo "è una spam";
fi



però ottengo questo errore:
/home/programmi/script/filtra: line 29: 1: command not found

dove la riga 29 corrisponde a
IS_SPAM= `/bin/grep X-Spam-Status:\ Yes /path/file | /usr/bin/wc -l`

Inviato: lun 14 ago 2006, 13:19
da nik600
ah ho risolto!

anche qui era lo spazio dopo l'uguale che in questo caso non ci va