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
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
echo -e "\u418_\u432\u430\u43D"
И_ван
\o/

une nouvelle option -v pour les tests (test,[,[[), permet de savoir si un nom de variable a été assigné :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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é.

printf peut afficher les dates, suivant le format strftime (comme `date'), pourvu qu'on lui donne des secondes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
on peut utiliser des valeurs négatives pour l'extraction de sous-chaînes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
var="foo bar baz"
echo "${var:2:-2}"
o bar b
pareil pour les tableaux/listes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
myArr=(foo bar baz)
echo "${myArr[-2]}"
bar
il est possible de déclarer des variables globales dans les fonctions grâce à l'option -g :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
et ça, pour les tableaux associatifs, qui doivent impérativement être déclarés, c'est bon!

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 à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
bash: nom_commande: commande introuvable
maintenant, bash est plus explicite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
-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.