problema con script bash e if

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
nik600
Linux 2.x
Linux 2.x
Messaggi: 450
Iscritto il: lun 15 mar 2004, 0:00
Contatta:

problema con script bash e if

Messaggio 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]

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio da masalapianta »

= e' un operatore di assegnazione non di confronto, devi usare == o eq

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio 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

nik600
Linux 2.x
Linux 2.x
Messaggi: 450
Iscritto il: lun 15 mar 2004, 0:00
Contatta:

Messaggio da nik600 »

grazie, erano gli spazi!

nik600
Linux 2.x
Linux 2.x
Messaggi: 450
Iscritto il: lun 15 mar 2004, 0:00
Contatta:

Messaggio 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`

nik600
Linux 2.x
Linux 2.x
Messaggi: 450
Iscritto il: lun 15 mar 2004, 0:00
Contatta:

Messaggio da nik600 »

ah ho risolto!

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

Rispondi