str=abcde
echo ${str:0:2} # output: ab
echo ${str::2} # outpub: ab
Le code ci-dessus aboutit au même résultat. Comme le code la documentation décrivent :
C'est ce qu'on appelle l'expansion des chaînes de caractères. Elle étend jusqu'à la longueur des caractères de la valeur du paramètre en commençant par le caractère spécifié par le décalage. Si le paramètre est
@
o*
un tableau indexé dont l'indice est@
o*
ou un nom de tableau associatif, les résultats diffèrent comme décrit ci-dessous. Si length est omis, il s'étend à la sous-chaîne de la valeur du paramètre en commençant par le caractère spécifié par offset et en s'étendant jusqu'à la fin de la valeur. length et offset sont des expressions arithmétiques (voir Shell Arithmetic).Si
offset
évalue à un nombre inférieur à zéro, la valeur est utilisée comme un décalage en caractères à partir de la fin de la valeur du paramètre. Si la valeurlength
évalue un nombre inférieur à zéro, il est interprété comme un décalage en caractères à partir de la fin de la valeur du paramètre plutôt que comme un nombre de caractères, et l'expansion est constituée des caractères entre le décalage et ce résultat. Notez qu'un décalage négatif doit être séparé des deux-points par au moins un espace afin d'éviter toute confusion avec la fonction:-
l'expansion.
Il n'y a pas de description de l'omission offset
mais en fait il peut être omis.
Je me demande s'il existe des documents que je n'ai pas remarqués.