/ / bash inaspettato token quindi errore - bash

bash inaspettato token quindi errore - bash

Ho scritto uno script bash e sto ricevendo un errore quando sto testando una condizione se una variabile è vuota o meno.

Di seguito è riportato uno script di esempio:

Non ho menzionato i comandi che vengono eseguiti per assegnare valori alle variabili a e fne ma

#! /bin/bash

for f in /path/*
do
a=`some command output`
fne=`this command operates on f`
if[ -z "$a" ]
then
echo "nothing found"
else
echo "$fne" "$a"
fi
done

errore: errore di sintassi vicino a un token imprevisto, "quindi".

Ho provato un'altra variazione come questa:

#! /bin/bash

for f in /path/*
do
a=`some command output`
fne=`this command operates on f`
if[ -z "$a" ]; then
echo "nothing found"
else
echo "$fne" "$a"
fi
done

di nuovo lo stesso errore.

quando provo a confrontare in questo modo:

if[ "$a" == "" ]; then

di nuovo lo stesso errore.

Non sono sicuro di quale sia la causa dell'errore. Il valore della variabile a è come questo:

Qualcosa con esso (1): [x, y]

contiene, spazi, parentesi, virgola, due punti. Sto accludendo il nome della variabile tra virgolette in confronto.

risposte:

6 per risposta № 1

Ti manca lo spazio dopo il if:

#! /bin/bash

for f in /path/*
do
a=`some command output`
fne=`this command operates on f`
if [ -z "$a" ]; then
echo "nothing found"
else
echo "$fne" "$a"
fi
done

Nota a margine: se stavi usando vi per la modifica, avrebbe la sintassi del tuo errore di battitura ...