[gull] dernier élément d'une liste

Martial Guex m.guex at mutech.ch
Fri Jul 2 23:53:02 CEST 2004


On Friday 02 July 2004 18.00, patrick jayet wrote:
> Bonjour à tous,
>
> Je recherche une ou plusieurs commandes bash permettant d'obtenir le
> dernier élément d'une liste de mots séparés par des espaces.
>
> ex. foo="once upon a time"
> but: obtenir "time".
>

Voici une autre solution ne faisant intervenir que des commandes interne à 
bash

foo="once upon a time";
sifs=$IFS; IFS=" "; a=($foo); IFS=$sifs; r=${a[$((${#a[*]} - 1))]}; echo $r


détail:
-------

sifs=$IFS                 # sauve la variable IFS
IFS=" "                   # indique que le séparateur de mots est l'espace
a=($foo)                  # crée un tableau des mots de $foo
IFS=$sifs                 # restore la valeure initiale d'IFS
r=${a[$((${#a[*]} - 1))]} # attribue le dernier element du tableau à r
                          # ${#a[*]} = nb élé du tableau
                          # $((${#a[*]} - 1)) index du dernier tableau
echo $r                   # affiche le résultat

A+
Martial



More information about the gull mailing list