On Mon, Jan 21, 2008 at 10:57:56PM +0100, Marco Amadori wrote: > Alle lunedì 21 gennaio 2008, Marco Ciampa ha scritto: > > Cosa sbaglio? > > > > voglio cercare su bootparam il numero di runlevel senza indicarlo > > esplicitamente, come da man bootparam. > > > La seguente espressione regolare, pur essendo giusta, sed non la digerisce. > > RL=$(sed -e '/\(^|.* \)\([09]\)\( .*|$\)/\2/g' /proc/cmdline) > > Perché? > > Non hai escapato i "|" > > Ecco quella corretta: > > RL=$(sed -e 's/\(^\|.* \)\([0-9]\)\($\| .*\)/\2/' /proc/cmdline) > > Che però ha un altro bug... se la stringa che ottieni è di lunghezza maggiore > di 1 allora non c'è nessun numero singolo isolato. > > quindi per farla lunga: > > RL=$(sed -e 's/\(^\|.* \)\([0-9]\)\($\| .*\)/\2/' /proc/cmdline) > if [ `echo -n $RL | wc -c` != 1 ]; then > RL=`cat /etc/inittab | grep initdefault | sed -e > 's/.*:\([0-9]\):.*/\1/'` > fi > > e se è vuota non è impostato nessun RL di default, dunque me lo prendo > da /etc/inittab > Capito! Grazie. Nuovo problema: purtroppo se la stringa è fatta così: 4abcd def fgh la prende tutta perché il gruppo centrale di parentesi viene eliminato e quindi il riferimento \2 diventa l'ultimo gruppo... :-( -- Marco Ciampa +--------------------+ | Linux User #78271 | | FSFE fellow #364 | +--------------------+ -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx