[BASH] Concatenare più condizioni nell'if

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
xneo
Prode Principiante
Messaggi: 83
Iscrizione: lunedì 21 aprile 2014, 12:55

[BASH] Concatenare più condizioni nell'if

Messaggio da xneo »

ciao a tutti,
vorrei sapere come concatenare più di due condizioni nelle parentesi dell'if.

if[ condizione1 -a condizione2 -a condizione3 ]

mi restituisce un errore.
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: [BASH] Concatenare più condizioni nell'if

Messaggio da 1001001 »

Sarebbe carino sapere che errore ti restituisce, ma mi avventuro in un'educated guess e dico: ci vuole lo spazio tra "if" e "["
"I find your lack of faith disturbing."
xneo
Prode Principiante
Messaggi: 83
Iscrizione: lunedì 21 aprile 2014, 12:55

Re: [BASH] Concatenare più condizioni nell'if

Messaggio da xneo »

allora lo script è questo:

Codice: Seleziona tutto

if [ ! $1 -a ! $2 -a ! $3 ]; then
    echo "errore"
else
    echo "ok"
fi
cioè devo controllare che mi vengano passati 3 argomenti, altrimenti stampo "errore"

l'errore prodotto è:
riga 1: [: atteso argomento
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] Concatenare più condizioni nell'if

Messaggio da crap0101 »

il fatto è che se manca un argomento, $3 verrà espanso a... nulla per cui la negazione e l'and logico non hanno nulla da negare o confrontare, si aspettano appunto un argomento che non c'è. Quell'if è comunque errato logicamente dal momento che staresti testando un unico caso, quello in cui non viene passato alcun argomento; ovviamente se l'argomento $1 non è stato passato, non è stato passato neanche il secondo, nè il terzo e così via... l'unica eccezione è il caso in cui gli argomenti effettivamente ci sono ma vengono comunque valutati nulli, cioè

Codice: Seleziona tutto

./script '' '' ''
che bho, potrebbero anche essere valori acettabile.
btw, se l'unica cosa da fare è controllare che allo script venga passato un certo numero di argomenti la cosa più comoda è confrontare quel valore con quello di $# .
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
xneo
Prode Principiante
Messaggi: 83
Iscrizione: lunedì 21 aprile 2014, 12:55

Re: [BASH] Concatenare più condizioni nell'if

Messaggio da xneo »

grazie, sei stato molto esaustivo.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Majestic-12 [Bot] e 8 ospiti