Bonjour,
Chet Ramey a annoncé, cette nuit pour nous, la disponibilité de bash-4.2
ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz
ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz
Pour bénéficier de tous les avantages de cette version, il faut disposer de readline-6.2.
Et, ça tombe bien : Chet Ramey a annoncé, cette nuit pour nous, la disponibilité de readline-6.2 :D
ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz
ftp://ftp.gnu.org/pub/gnu/readline/readline-6.2.tar.gz
Je ne sais pas si l'ordre à une quelconque importance, j'ai quand même compilé readline en premier.
Les nouveautés les plus évidentes :
$'...', echo, et printf lisent les séquences d'échappements \u :
\o/Code:
1
2 echo -e "\u418_\u432\u430\u43D" И_ван
une nouvelle option -v pour les tests (test,[,[[), permet de savoir si un nom de variable a été assigné :
ce n'est pas une erreur (pas de guillemets, pas de signe dollar), ici, on ne teste pas ce que contient une variable, mais que le nom est utilisé.Code:
1
2
3
4
5
6
7
8 var="" [ -n "$var" ] && echo ok || echo KO KO [ -v var ] && echo ok || echo KO ok unset var [ -v var ] && echo ok || echo KO KO
printf peut afficher les dates, suivant le format strftime (comme `date'), pourvu qu'on lui donne des secondes :
on peut utiliser des valeurs négatives pour l'extraction de sous-chaînes :Code:
1
2
3
4 printf '%(%d %m %Y)T\n' 0 01 01 1970 printf '%(%d %m %Y)T\n' $(date +%s) 15 02 2011
pareil pour les tableaux/listes :Code:
1
2
3 var="foo bar baz" echo "${var:2:-2}" o bar b
il est possible de déclarer des variables globales dans les fonctions grâce à l'option -g :Code:
1
2
3 myArr=(foo bar baz) echo "${myArr[-2]}" bar
et ça, pour les tableaux associatifs, qui doivent impérativement être déclarés, c'est bon!Code:
1
2
3
4
5
6
7
8 maFonction() { declare -g -A Aarray Aarray[prem]=premier Aarray[deuz]=deuxième } maFonction echo "${Aarray[deuz]}" deuxième
aussi, je suis tombé sur un message d'erreur plus clair concernant un faux-espace
(ça m'arrive souvent, parce que j'appuie sur la barre d'espace en ayant encore le doigt sur AltGr), en général, j'ai droit à
maintenant, bash est plus explicite :Code:bash: nom_commande: commande introuvable
Code:-bash: $'\302\240nom_commande' : commande introuvable
Il y a bien d'autres choses dont je ne perçois pas encore la portée, et que je vous laisse découvrir, quand vous aurez télécharger les sources, en ouvrant ~/bash-4.2/NEWS
Alors, n'hésitez pas à compléter, mes petits exemples.
À bientôt.