Aiuto su script bash: isolare argomento di un comando

3 replies [Ultimo contenuto]
sirio81
Offline
Joined: 10/06/2008

Generalizzo il problema:
ho una riga di testo tipo "comando -opzione argomento -opzione2 arogemnto ..."
Voglio estrarre/filtrare l'argomento di una precisa opzione.

Ci vuole una espressione regolare che cerchi ad esempio "-opzione2" e che restituisca la stringa che si trova compresa fra lo spazio che precede "argomento" e quello che lo segue.

Grazie.

gnask
Offline
Joined: 09/22/2008

Ciao Vale!
Prova a far così.
Metti in qualche modo la tua riga di testo dentro una variabile (es: $TEXT) e poi scorri le varie parole della stringa con un for, confrontandole con l'argomento che ti serve (es: $ARG) magari passato per parametro.
Quando l'hai trovata, nel passo successivo te la salvi (es: $RES).

FOUND="no"
for i in $TEXT; do
if [ $FOUND = "yes" ]; then
RES=$i
break
fi
if [ $i = $ARG ]; then
FOUND="yes"
fi
done
echo $RES

Fammi sapere.
Saluti a tutti!

sirio81
Offline
Joined: 10/06/2008

Grazie del suggerimento! Lunedì provo. Ciao.

sirio81
Offline
Joined: 10/06/2008

Ho adattato lo script per il mio scopo: trovare il nome delle macchine virtuali in esecuzione.
La sintassi di kvm è: kvm -name nome_macchina etc...
A me serviva estrarre 'nome_macchina' dai vari processi kvm che escono da ps -ef | grep kvm.
Ecco la funzione che lo fa:

get_vmnames () {
  found="no"
  vmnames=""
  arg="-name"
  for i in $(ps -ef | grep kvm); do

  if [ $found = "yes" ]; then
   vmnames="$i $vmnames"
   found="no"
  fi
  if [ "$i" = "$arg" ]; then
   found="yes"
  fi
  done
  echo $vmnames
}