Newsgroup: it.comp.os.linux.sys
Titolo: Bash 3.2 regex

Ciao
sto impazzendo a scrivere una riga di uno script...
ho googlato in lungo e in largo il web ma non ho ancora trovato una
soluzione...
come posso fare a verificare se una variabile ($IP) contiene uno o più
spazi?
Ho letto dell' operatore =~...
ma ho provato diverse soluzioni tra le quali...
if [[ "$IP" =~ \s ]]
then
  echo "Valore non valido"
fi
if [[ "$IP" =~ /*\s*/ ]]
then
  echo "Valore non valido"
fi
etc...
Se non ricordo male in Perl \s rappresentava un carattere "spazio"
qualcuno mi sa dare due dritte?

 spazi?
#!/bin/bash
for x in 'ciao' 'ho uno' 'io ho invece tre'; do
    if [[ "$x" =~ [[:space:]] ]]; then
        echo "$x: ho spazio"
    else
        echo "$x: no"
    fi
done
ciao ...
-- 
Never try to teach a pig to sing.
It wastes your time and annoys the pig.

 wrote:

Ti ringrazio molto sia per l' esempio che per il link...
E visto che ne approfitto sempre propongo ancora una domanda...
Ho da leggere un file con 5 valori separati da un carattere di
tabulazione...
es:
$CONF_FILE
proxy   192.168.5.1     tcp     8080    *
ora sto usando una soluzione di questo tipo, che in condizioni normali
lavora correttamente:
while read DESC IP PROTO PORTA LOG_FILE; do
 echo $DESC   ;proxy
 echo $IP         ;192.168.5.1
 [etc...]
done <$CONF_FILE
il problema è che se nel file di configurazione qualcuno inseriesce
uno spazio
es:
pro xy   192.168.5.1     tcp     8080    *
i valori letti sono tutti "shiftati"...
while read DESC IP PROTO PORTA LOG_FILE; do
 echo $DESC   ;pro
 echo $IP         ;xy
 [etc...]
done <$CONF_FILE
Come posso fare a leggere una serie di righe di un file dove so per
certo che i valori sono tutti sempre separati da una tabulazione?

 done <$CONF_FILE
prima del while reimposta la variabile d'ambiente IFS a tab:
IFS="   "


 IFS="   "
p.s. man read


 It wastes your time and annoys the pig.
avve già
tentato il manuale di read, ma...
$ sudo man read
Non c'è il manuale per read
?^^^

 Non c'è il manuale per read
$ help read # è una builtin
(poi perché sudo?)
-- 
By ZeD

 It wastes your time and annoys the pig.
ho provato a modificare IFS="\t\n" in modo tale da avere solo tab e
newline come sepratori, però quando eseguo lo script mi va in errore
con
/check_services-v2.sh: line 41: $CONF_FILE: ambiguous redirect
la linea 41 è l' ultima riga dello script e corrisponde a
done<$CONF_FILE
inutile dire che richiedo aiuto per uscirne...

 certo che i valori sono tutti sempre separati da una tabulazione?
---8<---
#!/bin/bash
IFS=$'\n'
file="foo"
campo() {
    echo $1 | awk -F"\t" '{print $'$2'}'
}
for line in $( cat $file )
do
    echo "--$line--"
    echo -n "Campo 1: "; campo $line 1
    echo -n "Campo 2: "; campo $line 2
done
--->8---
Questo è l'output:
$ ./script.sh 
--prova testo	dopo tab	altro tab--
Campo 1: prova testo
Campo 2: dopo tab
Campo 3: altro tab
--uno	due	tre--
Campo 1: uno
Campo 2: due
Campo 3: tre
$
Ovviamente, se i campi sono più d'un paio, ti conviene fare un ciclo for
(magari anche usando seq), ed utilizzare la variabile come indice di campo.
Hope this helps,
David
-- 
 . ''`.  Debian maintainer | 
http://wiki.debian.org/DavidPaleino
 : :'  : Linuxer #334216 --|-- 
http://www.hanskalabs.net/
 `. `'`  GPG: 1392B174 ----|---- 
http://snipr.com/qa_page
   `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174

 (poi perché sudo?)
LOL, Ubuntu ha trasformato una nuova generazione in sudo-dipendenti. :)

    `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
Grazie 1000 è proprio ciò di cui avevo bisogno!

whiplash ha scritto:

Beh, appropriatissima, allora:
http://www.xkcd.com/149/
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

> Beh, appropriatissima, allora:
http://www.xkcd.com/149/
Bello il sito...non lo conoscevo ancora!
Cmq credo che sudo non sia poi una cosa così sbagliata...
il fatto che abbia dato un $ sudo man read è dato dal fatto che come
user normale non ottenevo nulla e (da niubbio) pensavo mancasse
qualche diritto di lettura su quel manuale...

 LOL, Ubuntu ha trasformato una nuova generazione in sudo-dipendenti. :)
Forse, allora, anche OpenBSD...
-- 
Fr3ddie
fr3...@fr3ddie.it
Home Page: 
http://www.fr3ddie.it
OpenPGP Public Key available on my website
c:\>winpatch.exe
Loading.....
Windows_all_versions_patch001
This Microsoft© patch fix ALL bugs present. All rights reserved.
Formatting C:, please wait...
Installing Linux...
Loading kernel...