PDA

View Full Version : controllo sintassi stringhe


principVo
23-01-2008, 08:02
ciao a tutti!
ho una curiosità.. c'è modo in linux di testare la correttezza della sintassi di una stringa data in input?
se ad esempio inserisco una stringa tipo "abc" oppure "ab" oppure "bac" oppure "c" (e così via) allora la stringa è corretta, se invece inserisco una stringa tipo "axs" oppure "zt" oppure "abi" in teoria dovrei dare un messaggio di errore..
ossia, la stringa è corretta solo se è formata dalle lettere a,b e c..
c'è modo di fare un test del genere?
grazie! ;)

VICIUS
23-01-2008, 12:12
Cerca di essere un po' più dettagliato. Devi modificare un programma? Uno script? Quale linguaggio devi usare?

principVo
24-01-2008, 10:22
si, scusa non ho specificato, devo usarlo in uno script..
in sostanza voglio che l'utente che vuole controllare se certi file hanno certi permessi mi possa inserire stringhe come "xrw" "rwx" "x" "wx" ma non ad esempio "ald" "xsw" "xad" ecc ecc..
ho pensato alle regex ma non sono in grado di trovare il modo di confrontare la mia stringa con una regex NE' ho trovato la regex adatta! :mbe:

PS: sono una ragazza! :D

VICIUS
24-01-2008, 11:18
Per confrontare puoi usare grep e un if in questo modo

echo "stringa" | grep "regex" >/dev/null

if [ $? == 0 ]; then
echo "ok c'è un match"
else
echo "niente da fare"
fi

Per la regex da usare potresti provare con [rwx]{1,3}

principVo
24-01-2008, 11:24
perfetto! dopo provo e ti so dire! :D

kingv
24-01-2008, 11:31
bash ha già il controllo del match di regular expression, per matchare che la variabile pippo sia composta solo dalle lettere xwr (qualsiasi cardinalità) puoi usare:

if [[ $pippo =~ ^[rwx]+$ ]]
then echo "ok"
else echo "ko"
fi

VICIUS
24-01-2008, 11:36
if [[ $pippo =~ ^[rwx]+$ ]]
then echo "ok"
else echo "ko"
fi
Urca un po' come in perl! Questa me la segno che può sempre tornarmi utile.

principVo
24-01-2008, 12:07
perfetto!
grazie mille! :D